mirror of
https://github.com/PowerShell/PowerShell
synced 2026-06-08 12:12:50 +00:00
Update packaging script to build reference assembly targeting netcoreapp2.1 and use actual .csproj files (#8729)
This commit is contained in:
committed by
Aditya Patwardhan
parent
28042f3f44
commit
1264a00a76
@@ -1432,7 +1432,7 @@ function CreateNugetPlatformFolder
|
||||
[string] $PlatformBinPath
|
||||
)
|
||||
|
||||
$destPath = New-Item -ItemType Directory -Path (Join-Path $PackageRuntimesFolder "$Platform/lib/netstandard2.0")
|
||||
$destPath = New-Item -ItemType Directory -Path (Join-Path $PackageRuntimesFolder "$Platform/lib/netcoreapp2.1")
|
||||
$fullPath = Join-Path $PlatformBinPath $file
|
||||
|
||||
if (-not(Test-Path $fullPath)) {
|
||||
@@ -1563,7 +1563,7 @@ function New-UnifiedNugetPackage
|
||||
$packageRuntimesFolder = New-Item (Join-Path $filePackageFolder.FullName 'runtimes') -ItemType Directory
|
||||
|
||||
#region ref
|
||||
$refFolder = New-Item (Join-Path $filePackageFolder.FullName 'ref/netstandard2.0') -ItemType Directory -Force
|
||||
$refFolder = New-Item (Join-Path $filePackageFolder.FullName 'ref/netcoreapp2.1') -ItemType Directory -Force
|
||||
CopyReferenceAssemblies -assemblyName $fileBaseName -refBinPath $refBinPath -refNugetPath $refFolder -assemblyFileList $fileList
|
||||
#endregion ref
|
||||
|
||||
@@ -1694,7 +1694,7 @@ function New-UnifiedNugetPackage
|
||||
}
|
||||
|
||||
<#
|
||||
Copy the generated reference assemblies to the 'ref/netstandard2.0' folder properly.
|
||||
Copy the generated reference assemblies to the 'ref/netcoreapp2.1' folder properly.
|
||||
This is a helper function used by 'New-UnifiedNugetPackage'
|
||||
#>
|
||||
function CopyReferenceAssemblies
|
||||
@@ -1897,6 +1897,7 @@ function New-ReferenceAssembly
|
||||
|
||||
foreach ($assemblyName in $assemblyNames) {
|
||||
|
||||
Write-Log "Building reference assembly for '$assemblyName'"
|
||||
$projectFolder = New-Item -Path "$genAPIFolder/$assemblyName" -ItemType Directory -Force
|
||||
$generatedSource = Join-Path $projectFolder "$assemblyName.cs"
|
||||
$filteredSource = Join-Path $projectFolder "${assemblyName}_Filtered.cs"
|
||||
@@ -1918,15 +1919,19 @@ function New-ReferenceAssembly
|
||||
{
|
||||
Push-Location $projectFolder
|
||||
|
||||
$csProj = GenerateCSProjectContent -AssemblyName $assemblyName -RefAssemblyVersion $RefAssemblyVersion -SnkFilePath $SnkFilePath -SMAReferencePath $SMAReferenceAssembly
|
||||
$csProj | Out-File -FilePath "$projectFolder/$assemblyName.csproj" -Force
|
||||
$sourceProjectRoot = Join-Path $PSScriptRoot 'projects/reference'
|
||||
$sourceProjectFile = Join-Path $sourceProjectRoot "$assemblyName.csproj"
|
||||
Copy-Item -Path $sourceProjectFile -Destination "$projectFolder/$assemblyName.csproj" -Force
|
||||
|
||||
Write-Host "##vso[artifact.upload containerfolder=artifact;artifactname=artifact]$projectFolder/$assemblyName.csproj"
|
||||
Write-Host "##vso[artifact.upload containerfolder=artifact;artifactname=artifact]$generatedSource"
|
||||
|
||||
Start-NativeExecution { dotnet build -c Release }
|
||||
$arguments = GenerateBuildArguments -AssemblyName $assemblyName -RefAssemblyVersion $RefAssemblyVersion -SnkFilePath $SnkFilePath -SMAReferencePath $SMAReferenceAssembly
|
||||
|
||||
$refBinPath = Join-Path $projectFolder "bin/Release/netstandard2.0/$assemblyName.dll"
|
||||
Write-Log "Running: dotnet $arguments"
|
||||
Start-NativeExecution -sb {dotnet $arguments}
|
||||
|
||||
$refBinPath = Join-Path $projectFolder "bin/Release/netcoreapp2.1/$assemblyName.dll"
|
||||
if ($null -eq $refBinPath) {
|
||||
throw "Reference assembly was not built."
|
||||
}
|
||||
@@ -1950,6 +1955,10 @@ function New-ReferenceAssembly
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
Helper function for New-ReferenceAssembly to further clean up the
|
||||
C# source code generated from GenApi.exe.
|
||||
#>
|
||||
function CleanupGeneratedSourceCode
|
||||
{
|
||||
param(
|
||||
@@ -2033,7 +2042,11 @@ function CleanupGeneratedSourceCode
|
||||
Write-Log "Code cleanup complete for reference assembly '$assemblyName'."
|
||||
}
|
||||
|
||||
function GenerateCSProjectContent
|
||||
<#
|
||||
Helper function for New-ReferenceAssembly to get the arguments
|
||||
for building reference assemblies.
|
||||
#>
|
||||
function GenerateBuildArguments
|
||||
{
|
||||
param(
|
||||
[string] $AssemblyName,
|
||||
@@ -2042,21 +2055,18 @@ function GenerateCSProjectContent
|
||||
[string] $SMAReferencePath
|
||||
)
|
||||
|
||||
switch ($assemblyName) {
|
||||
"System.Management.Automation" {
|
||||
$csProj = $packagingStrings.'System.Management.Automation' -f $RefAssemblyVersion, $SnkFilePath
|
||||
}
|
||||
$arguments = @('build')
|
||||
$arguments += @('-c','Release')
|
||||
$arguments += "/p:RefAsmVersion=$RefAssemblyVersion"
|
||||
$arguments += "/p:SnkFile=$SnkFilePath"
|
||||
|
||||
switch ($AssemblyName) {
|
||||
"Microsoft.PowerShell.Commands.Utility" {
|
||||
$csProj = $packagingStrings.'Microsoft.PowerShell.Commands.Utility' -f $RefAssemblyVersion, $SnkFilePath, $SMAReferencePath
|
||||
}
|
||||
|
||||
default {
|
||||
throw "It's not yet supported to generate reference assembly for '$assemblyName'"
|
||||
$arguments += "/p:SmaRefFile=$SMAReferencePath"
|
||||
}
|
||||
}
|
||||
|
||||
return $csProj
|
||||
return $arguments
|
||||
}
|
||||
|
||||
<#
|
||||
@@ -2205,7 +2215,7 @@ function New-NugetContentPackage
|
||||
New-StagingFolder -StagingPath $contentFolder
|
||||
}
|
||||
|
||||
$projectFolder = Join-Path $PSScriptRoot -ChildPath 'project'
|
||||
$projectFolder = Join-Path $PSScriptRoot 'projects/nuget'
|
||||
|
||||
$arguments = @('pack')
|
||||
$arguments += @('--output',$nugetFolder)
|
||||
|
||||
@@ -136,46 +136,6 @@ open {0}
|
||||
</dependencies>
|
||||
</metadata>
|
||||
</package>
|
||||
'@
|
||||
|
||||
'System.Management.Automation' = @'
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Version>{0}</Version>
|
||||
<DelaySign>true</DelaySign>
|
||||
<AssemblyOriginatorKeyFile>{1}</AssemblyOriginatorKeyFile>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<LangVersion>Latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Management.Infrastructure" Version="1.0.0" />
|
||||
<PackageReference Include="System.Security.AccessControl" Version="4.4.1" />
|
||||
<PackageReference Include="System.Security.Principal.Windows" Version="4.4.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
'@
|
||||
|
||||
'Microsoft.PowerShell.Commands.Utility' = @'
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netstandard2.0</TargetFramework>
|
||||
<Version>{0}</Version>
|
||||
<DelaySign>true</DelaySign>
|
||||
<AssemblyOriginatorKeyFile>{1}</AssemblyOriginatorKeyFile>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<LangVersion>Latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Management.Automation">
|
||||
<HintPath>{2}</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||
<PackageReference Include="System.Security.AccessControl" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
'@
|
||||
|
||||
NuGetConfigFile = @'
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@
|
||||
<authors>PowerShell</authors>
|
||||
<owners>PowerShell</owners>
|
||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||
<licenseUrl>https://github.com/PowerShell/PowerShell/blob/master/LICENSE.txt</licenseUrl>
|
||||
<license type="expression">MIT</license>
|
||||
<projectUrl>https://github.com/powershell/powershell</projectUrl>
|
||||
<iconUrl>https://github.com/PowerShell/PowerShell/blob/master/assets/Powershell_64.png</iconUrl>
|
||||
<description>This package contains the PowerShell Core for $runtime$.</description>
|
||||
@@ -0,0 +1,19 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
<Version>$(RefAsmVersion)</Version>
|
||||
<DelaySign>true</DelaySign>
|
||||
<AssemblyOriginatorKeyFile>$(SnkFile)</AssemblyOriginatorKeyFile>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<LangVersion>Latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Management.Automation">
|
||||
<HintPath>$(SmaRefFile)</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.1" />
|
||||
<PackageReference Include="System.Security.AccessControl" Version="4.5.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,15 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>netcoreapp2.1</TargetFramework>
|
||||
<Version>$(RefAsmVersion)</Version>
|
||||
<DelaySign>true</DelaySign>
|
||||
<AssemblyOriginatorKeyFile>$(SnkFile)</AssemblyOriginatorKeyFile>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
<LangVersion>Latest</LangVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Management.Infrastructure" Version="1.0.0" />
|
||||
<PackageReference Include="System.Security.AccessControl" Version="4.5.0" />
|
||||
<PackageReference Include="System.Security.Principal.Windows" Version="4.5.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
Reference in New Issue
Block a user