Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 29 additions & 19 deletions tools/packaging/packaging.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -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)) {
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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"
Expand All @@ -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."
}
Expand All @@ -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(
Expand Down Expand Up @@ -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,
Expand All @@ -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
}

<#
Expand Down Expand Up @@ -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)
Expand Down
40 changes: 0 additions & 40 deletions tools/packaging/packaging.strings.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -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 = @'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
Original file line number Diff line number Diff line change
@@ -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>
Original file line number Diff line number Diff line change
@@ -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>