From ccbe323e810c5eafb84703da2f54e4ec748d04be Mon Sep 17 00:00:00 2001 From: James Truher Date: Tue, 5 Mar 2019 19:59:34 -0800 Subject: [PATCH 01/11] Update to build both net452 and netstandard2.0 assemblies Update build script to allow building only core Update nuspec file to include both 452 and netstandard2.0 assemblies --- PowerShellStandard.psm1 | 30 ++- build.ps1 | 22 +- src/3/System.Management.Automation-lib.csproj | 4 +- src/5/PowerShellStandard.Library.nuspec | 10 +- src/5/System.Management.Automation-lib.csproj | 4 +- test/3/{ => core}/Class1.cs | 0 test/3/{ => core}/PSS3.Tests.ps1 | 0 test/3/{ => core}/PSStandard.csproj | 2 +- test/3/full/Class1.cs | 17 ++ test/3/full/PSS3.Tests.ps1 | 16 ++ test/3/full/PSStandard.csproj | 12 + test/5/{ => core}/Class1.cs | 0 test/5/{ => core}/PSS5.Tests.ps1 | 0 test/5/{ => core}/PSStandard.csproj | 2 +- test/5/full/Class1.cs | 27 ++ test/5/full/PSS5.Tests.ps1 | 242 ++++++++++++++++++ test/5/full/PSStandard.csproj | 12 + 17 files changed, 383 insertions(+), 17 deletions(-) rename test/3/{ => core}/Class1.cs (100%) rename test/3/{ => core}/PSS3.Tests.ps1 (100%) rename test/3/{ => core}/PSStandard.csproj (67%) create mode 100644 test/3/full/Class1.cs create mode 100644 test/3/full/PSS3.Tests.ps1 create mode 100644 test/3/full/PSStandard.csproj rename test/5/{ => core}/Class1.cs (100%) rename test/5/{ => core}/PSS5.Tests.ps1 (100%) rename test/5/{ => core}/PSStandard.csproj (67%) create mode 100644 test/5/full/Class1.cs create mode 100644 test/5/full/PSS5.Tests.ps1 create mode 100644 test/5/full/PSStandard.csproj diff --git a/PowerShellStandard.psm1 b/PowerShellStandard.psm1 index f930306..d6de5df 100644 --- a/PowerShellStandard.psm1 +++ b/PowerShellStandard.psm1 @@ -1,4 +1,5 @@ function Start-Build { + param ( [switch]$CoreOnly ) $versions = 3,5 $srcBase = Join-Path $PsScriptRoot src foreach ( $version in $versions ) { @@ -6,7 +7,12 @@ function Start-Build { $srcDir = Join-Path $srcBase $version Push-Location $srcDir dotnet restore - dotnet build --configuration Release + if ( $CoreOnly ) { + dotnet build --configuration Release --framework netstandard2.0 + } + else { + dotnet build --configuration Release + } } finally { Pop-Location @@ -49,13 +55,31 @@ function Start-Clean { } function Invoke-Test { + param ( [switch]$CoreOnly ) $versions = 3,5 foreach ( $version in $versions ) { try { $testBase = Join-Path $PsScriptRoot "test/${version}" Push-Location $testBase - dotnet build --configuration Release - Invoke-Pester + foreach ( $framework in "core","full" ) { + if ( $CoreOnly -and $framework -eq "full" ) { + continue + } + try { + Push-Location $framework + if ( $CoreOnly ) { + dotnet build --configuration Release --framework netstandard2.0 + Invoke-Pester + } + else { + dotnet build --configuration Release + Invoke-Pester + } + } + finally { + pop-location + } + } } finally { Pop-Location diff --git a/build.ps1 b/build.ps1 index da00f83..053cdd0 100644 --- a/build.ps1 +++ b/build.ps1 @@ -1,8 +1,9 @@ #!/usr/bin/env pwsh param ( - [Parameter()][switch]$Clean, - [Parameter()][switch]$Test, - [Parameter()][switch]$Pack + [Parameter(HelpMessage="Remove earlier built versions")][switch]$Clean, + [Parameter(HelpMessage="Run the tests")][switch]$Test, + [Parameter(HelpMessage="Create a .nupkg")][switch]$Pack, + [Parameter(HelpMessage="Build only for netstandard2.0")][switch]$CoreOnly ) import-module $PSScriptRoot/PowerShellStandard.psm1 -force @@ -12,14 +13,25 @@ if ( $Clean ) { return } +# It would be great if there were targeting frameworks for net452 +# on non-Windows platforms, but for now, if you're linux or macOS +# we'll build only core +if ( $IsLinux -or $IsMacOS ) { + $CoreOnly = $true +} + if ( $Pack ) { + if ( $CoreOnly ) { + Write-Warning "Must build both netstandard2.0 and net452 to build package" + throw "Build on a Windows system with netstandard and net452 target platforms" + } Export-NuGetPackage } else { - Start-Build + Start-Build -CoreOnly:$CoreOnly } if ( $Test ) { - Invoke-Test + Invoke-Test -CoreOnly:$CoreOnly } diff --git a/src/3/System.Management.Automation-lib.csproj b/src/3/System.Management.Automation-lib.csproj index 3df409d..c85d8ff 100644 --- a/src/3/System.Management.Automation-lib.csproj +++ b/src/3/System.Management.Automation-lib.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net451 True ..\signing\visualstudiopublic.snk System.Management.Automation @@ -10,7 +10,7 @@ RUNTIME_SERIALIZATION ./PowershellStandard.Library.nuspec - + diff --git a/src/5/PowerShellStandard.Library.nuspec b/src/5/PowerShellStandard.Library.nuspec index 657e569..c4d72c4 100644 --- a/src/5/PowerShellStandard.Library.nuspec +++ b/src/5/PowerShellStandard.Library.nuspec @@ -2,7 +2,8 @@ PowerShellStandard.Library - 5.1.0-RC1 + 5.1.0 + PowerShellStandard.Library Microsoft Microsoft,PowerShellTeam https://github.com/PowerShell/PowerShellStandard @@ -11,13 +12,16 @@ false Contains the reference assemblies for PowerShell Standard 5 © Microsoft Corporation. All rights reserved. - PowerShell, reference, netstandard2, netstandard2.0 + PowerShell, reference, net452, netstandard2, netstandard2.0 - + + False + + diff --git a/src/5/System.Management.Automation-lib.csproj b/src/5/System.Management.Automation-lib.csproj index ba6c6d4..80c9d10 100644 --- a/src/5/System.Management.Automation-lib.csproj +++ b/src/5/System.Management.Automation-lib.csproj @@ -1,6 +1,6 @@  - netstandard2.0 + netstandard2.0;net452 True ..\signing\visualstudiopublic.snk System.Management.Automation @@ -10,7 +10,7 @@ RUNTIME_SERIALIZATION ./PowershellStandard.Library.nuspec - + diff --git a/test/3/Class1.cs b/test/3/core/Class1.cs similarity index 100% rename from test/3/Class1.cs rename to test/3/core/Class1.cs diff --git a/test/3/PSS3.Tests.ps1 b/test/3/core/PSS3.Tests.ps1 similarity index 100% rename from test/3/PSS3.Tests.ps1 rename to test/3/core/PSS3.Tests.ps1 diff --git a/test/3/PSStandard.csproj b/test/3/core/PSStandard.csproj similarity index 67% rename from test/3/PSStandard.csproj rename to test/3/core/PSStandard.csproj index 9539d6e..1788186 100644 --- a/test/3/PSStandard.csproj +++ b/test/3/core/PSStandard.csproj @@ -6,7 +6,7 @@ - + diff --git a/test/3/full/Class1.cs b/test/3/full/Class1.cs new file mode 100644 index 0000000..bb19baf --- /dev/null +++ b/test/3/full/Class1.cs @@ -0,0 +1,17 @@ +using System; +using System.Management.Automation; + +namespace PSStandard +{ + [Cmdlet("get","thing")] + public class Class1 : PSCmdlet + { + [Parameter()] + [Credential()] + public PSCredential Credential { get; set; } + + protected override void EndProcessing() { + WriteObject("Success!"); + } + } +} diff --git a/test/3/full/PSS3.Tests.ps1 b/test/3/full/PSS3.Tests.ps1 new file mode 100644 index 0000000..fb64add --- /dev/null +++ b/test/3/full/PSS3.Tests.ps1 @@ -0,0 +1,16 @@ +Describe "PowerShell Standard 3" { + BeforeAll { + $cmdletAssembly = "bin/Release/netstandard2.0/Demo.Cmdlet.dll" + $assemblyPath = Join-Path "$PSScriptRoot" $cmdletAssembly + $PSBin = (Get-Process -id $PID).MainModule.FileName + } + It "Can build a reference assembly" { + dotnet restore + dotnet build --configuration Release + $assemblyPath | Should Exist + } + It "Can execute the compiled cmdlet" { + $result = & $PSBin -c "import-module $assemblyPath; Get-Thing" + $result | Should Be "success!" + } +} diff --git a/test/3/full/PSStandard.csproj b/test/3/full/PSStandard.csproj new file mode 100644 index 0000000..c2e6477 --- /dev/null +++ b/test/3/full/PSStandard.csproj @@ -0,0 +1,12 @@ + + + + net452 + Demo.Cmdlet + + + + + + + diff --git a/test/5/Class1.cs b/test/5/core/Class1.cs similarity index 100% rename from test/5/Class1.cs rename to test/5/core/Class1.cs diff --git a/test/5/PSS5.Tests.ps1 b/test/5/core/PSS5.Tests.ps1 similarity index 100% rename from test/5/PSS5.Tests.ps1 rename to test/5/core/PSS5.Tests.ps1 diff --git a/test/5/PSStandard.csproj b/test/5/core/PSStandard.csproj similarity index 67% rename from test/5/PSStandard.csproj rename to test/5/core/PSStandard.csproj index b452d75..56ea41f 100644 --- a/test/5/PSStandard.csproj +++ b/test/5/core/PSStandard.csproj @@ -6,7 +6,7 @@ - + diff --git a/test/5/full/Class1.cs b/test/5/full/Class1.cs new file mode 100644 index 0000000..6c8e388 --- /dev/null +++ b/test/5/full/Class1.cs @@ -0,0 +1,27 @@ +using System; +using System.Management.Automation; +using System.Management.Automation.Runspaces; + +namespace PSStandard +{ + [Cmdlet("get","thing")] + public class Class1 : PSCmdlet + { + [Parameter()] + [Credential()] + public PSCredential Credential { get; set; } + + [Parameter()] + [ValidateSet("a","b","c")] + public string p1 { get; set; } + + protected override void BeginProcessing() { + WriteVerbose(Runspace.DefaultRunspace.Name); + PSObject p = new PSObject(DateTime.Now); + WriteVerbose(p.Properties["DateTime"].ToString()); + } + protected override void EndProcessing() { + WriteObject("Success!"); + } + } +} diff --git a/test/5/full/PSS5.Tests.ps1 b/test/5/full/PSS5.Tests.ps1 new file mode 100644 index 0000000..5555670 --- /dev/null +++ b/test/5/full/PSS5.Tests.ps1 @@ -0,0 +1,242 @@ +Describe 'PowerShell Standard 5' { + + BeforeAll { + $repoRoot = git rev-parse --show-toplevel + $libraryPath = "${repoRoot}/src/5/bin/Release/netstandard2.0/System.Management.Automation.dll" + $assemblyExists = test-path $libraryPath + if ( $assemblyExists ) { + $standardAssembly = [System.Reflection.Assembly]::LoadFile($libraryPath) + } + } + + Context 'Creating a cmdlet' { + BeforeAll { + $cmdletAssembly = 'bin/Release/netstandard2.0/Demo.Cmdlet.dll' + $assemblyPath = Join-Path "$PSScriptRoot" $cmdletAssembly + $PSBin = (Get-Process -id $PID).MainModule.FileName + } + It 'Can build a reference assembly' { + try { + Push-Location $PSScriptRoot + dotnet restore + dotnet build --configuration Release + $assemblyPath | Should -Exist + } + finally { + Pop-Location + } + } + It 'Can execute the compiled cmdlet' { + $result = & $PSBin -c "import-module $assemblyPath; Get-Thing" + $result | Should -Be 'success!' + } + } + + Context 'Reflection tests' { + + $testCases = @{ + Name = "Issue 52: ValidateArgumentsAttribute.Validate method is not abstract" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.ValidateArgumentsAttribute') + $m = $t.GetMember('Validate','Public,NonPublic,Instance,Static,DeclaredOnly') + $m.IsAbstract |Should -Be $true + } + }, + @{ + Name = "Issue 50: PSEventUnsubscribedEventHander argument type should be PSEventUnsubscribedEventArgs" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.PSEventUnsubscribedEventHandler') + $m = $t.GetMethod('Invoke') + $parameters = $m.GetParameters() + $parameters[1].ParameterType.FullName | Should -Be 'System.Management.Automation.PSEventUnsubscribedEventArgs' + } + }, + @{ + Name = "Issue 44: FunctionMemberAst.Parameters should be accessible" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Language.FunctionMemberAst') + $p = $t.GetProperty('Parameters') + $p.GetMethod.IsPublic | Should -Be $true + } + }, + @{ + Name = "Issue 42: Runspace.Default should not contain public CreateNestedPipeline" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Runspaces.Runspace') + $t.GetMembers('Public,NonPublic,Instance,Static')|?{$_.Name -match 'CreatedNestedPipeline'}|Should -BeNullOrEmpty + } + }, + @{ + Name = "Issue 36: PSMemberInfo.Copy is marked 'virtual' but should be 'abstract'" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.PSMemberInfo') + $m = $t.GetMethod('Copy') + $m.IsAbstract | Should -Be $true + } + }, + @{ + Name = "Issue 26: Several properties missing from CmdletProvider (also issue 14)" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Provider.CmdletProvider') + $t.GetProperty('CurrentPSTransaction') | Should -Not -BeNullOrEmpty + $t.GetProperty('DynamicParameters',[Reflection.BindingFlags]'NonPublic,Instance') | Should -Not -BeNullOrEmpty + $t.GetProperty('PSDriveInfo',[Reflection.BindingFlags]'NonPublic,Instance') | Should -Not -BeNullOrEmpty + $t.GetProperty('ProviderInfo',[Reflection.BindingFlags]'NonPublic,Instance') | Should -Not -BeNullOrEmpty + } + }, + @{ + Name = "Issue 19: SetJobState missing from Job class" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Job') + $t.GetMethod('SetJobState',[System.Reflection.BindingFlags]'NonPublic,Instance') | Should -Not -BeNullOrEmpty + } + }, + @{ + Name = "Issue 18: Debugger does not contain protected parameterless constructor" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Debugger') + # no public constructors + $t.GetConstructors().Count | Should -Be 0 + # one protected, parameterless constructor + $constructor = $t.GetConstructors('NonPublic,Instance') + @($constructor).Count | Should -Be 1 + $constructor.IsFamily | Should -Be $true + $constructor.GetParameters().Count | Should -Be 0 + } + }, + @{ + Name = "Issue 17: ScriptExtent does not inherit IScriptExtent" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Language.ScriptExtent') + $t.GetInterface('System.Management.Automation.Language.IScriptExtent')|Should -Not -BeNullOrEmpty + } + }, + @{ + Name = "Issue 16: ICustomAstVistor2 does not inherit ICustomAstVistor" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Language.ICustomAstVisitor2') + $t.GetInterface('System.Management.Automation.Language.ICustomAstVisitor')|Should -Not -BeNullOrEmpty + } + }, + @{ + Name = "Issue 11: Missing cmdletization types" + ScriptBlock = { + $typeList = 'Microsoft.PowerShell.Cmdletization.BehaviorOnNoMatch', + 'Microsoft.PowerShell.Cmdletization.CmdletAdapter`1', + 'Microsoft.PowerShell.Cmdletization.MethodInvocationInfo', 'Microsoft.PowerShell.Cmdletization.MethodParameter', + 'Microsoft.PowerShell.Cmdletization.MethodParameterBindings', + 'Microsoft.PowerShell.Cmdletization.QueryBuilder', + 'Microsoft.PowerShell.Cmdletization.Xml.ConfirmImpact', 'Microsoft.PowerShell.Cmdletization.Xml.ItemsChoiceType' + foreach ( $t in $typeList ) { + $standardAssembly.GetType($t) | Should -Not -BeNullOrEmpty + } + } + }, + @{ + Name = "Issue 8: DefaultRunspace should be a static property" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Runspaces.Runspace') + $p = $t.GetProperty('DefaultRunspace',[System.Reflection.BindingFlags]'Public,Static') + $p | Should -Not -BeNullOrEmpty + } + }, + @{ + Name = "Issue 7: params keyword is left out for array type parameters" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.OutputTypeAttribute') + foreach ($c in $t.GetConstructors()) { + $c.GetParameters()[-1].CustomAttributes.AttributeType.FullName | Should -Be System.ParamArrayAttribute + } + } + }, + @{ + Name = "Issue 6: PSObject.Properties is using int instead of string" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.PSObject') + $p = $t.GetProperty('Properties') + $p.PropertyType.GetMember('Item').GetIndexParameters().ParameterType.FullName | Should -Be 'System.String' + } + }, + @{ + Name = "Issue 4: CreatePipeline should not be available" + ScriptBlock = { + $t = $standardAssembly.GetType('System.Management.Automation.Runspaces.Runspace') + $t.GetMembers('Public,NonPublic,Instance,Static')|?{$_.Name -match 'CreatePipeline'} | Should -BeNullOrEmpty + } + } + + It '' -testcases $testCases -skip:(! $assemblyExists) { + param ( [string]$name, [scriptblock]$ScriptBlock ) + & ${ScriptBlock} + } + } + + Context 'The type list is expected' { + BeforeAll { + $smaT = [psobject].assembly.GetTypes()|?{$_.IsPublic}|Sort-Object FullName + $asmT = $standardAssembly.GetTypes()|?{$_.IsPublic}|Sort-Object FullName + # These are the types which we expect to not be in the standard library + $expectedMissingTypes = @{ Name = 'Microsoft.PowerShell.ProcessCodeMethods' }, + @{ Name = 'Microsoft.PowerShell.DesiredStateConfiguration.ArgumentToConfigurationDataTransformationAttribute' }, + @{ Name = 'Microsoft.PowerShell.DesiredStateConfiguration.Internal.DscRemoteOperationsClass' }, + @{ Name = 'Microsoft.PowerShell.DesiredStateConfiguration.Internal.DscClassCache' }, + @{ Name = 'Microsoft.PowerShell.Commands.GetExperimentalFeatureCommand' }, + @{ Name = 'Microsoft.PowerShell.Commands.PSPropertyExpressionResult' }, + @{ Name = 'Microsoft.PowerShell.Commands.PSPropertyExpression' }, + @{ Name = 'Microsoft.PowerShell.Commands.UpdateHelpScope' }, + @{ Name = 'Microsoft.PowerShell.CoreClr.Stubs.AuthenticationLevel' }, + @{ Name = 'Microsoft.PowerShell.CoreClr.Stubs.ImpersonationLevel' }, + @{ Name = 'System.Management.Automation.PowerShellAssemblyLoadContextInitializer' }, + @{ Name = 'System.Management.Automation.Platform' }, + @{ Name = 'System.Management.Automation.ValidateRangeKind' }, + @{ Name = 'System.Management.Automation.CachedValidValuesGeneratorBase' }, + @{ Name = 'System.Management.Automation.IValidateSetValuesGenerator' }, + @{ Name = 'System.Management.Automation.ArgumentCompletionsAttribute' }, + @{ Name = 'System.Management.Automation.GetSymmetricEncryptionKey' }, + @{ Name = 'System.Management.Automation.StartRunspaceDebugProcessingEventArgs' }, + @{ Name = 'System.Management.Automation.ProcessRunspaceDebugEndEventArgs' }, + @{ Name = 'System.Management.Automation.ExperimentalFeature' }, + @{ Name = 'System.Management.Automation.ExperimentAction' }, + @{ Name = 'System.Management.Automation.ExperimentalAttribute' }, + @{ Name = 'System.Management.Automation.PSSnapInSpecification' }, + @{ Name = 'System.Management.Automation.PSParseError' }, + @{ Name = 'System.Management.Automation.PSParser' }, + @{ Name = 'System.Management.Automation.PSToken' }, + @{ Name = 'System.Management.Automation.PSTokenType' }, + @{ Name = 'System.Management.Automation.TypeInferenceRuntimePermissions' }, + @{ Name = 'System.Management.Automation.PSVersionHashTable' }, + @{ Name = 'System.Management.Automation.SemanticVersion' }, + @{ Name = 'System.Management.Automation.LocationChangedEventArgs' }, + @{ Name = 'System.Management.Automation.WorkflowInfo' }, + @{ Name = 'System.Management.Automation.PSSnapInInfo' }, + @{ Name = 'System.Management.Automation.VerbInfo' }, + @{ Name = 'System.Management.Automation.Remoting.WSMan.WSManServerChannelEvents' }, + @{ Name = 'System.Management.Automation.Remoting.WSMan.ActiveSessionsChangedEventArgs' }, + @{ Name = 'System.Management.Automation.Runspaces.PipelineStateInfo' }, + @{ Name = 'System.Management.Automation.Runspaces.PipelineStateEventArgs' }, + @{ Name = 'System.Management.Automation.Runspaces.Pipeline' }, + @{ Name = 'System.Management.Automation.Runspaces.PowerShellProcessInstance' }, + @{ Name = 'System.Management.Automation.Runspaces.SSHConnectionInfo' }, + @{ Name = 'System.Management.Automation.Runspaces.VMConnectionInfo' }, + @{ Name = 'System.Management.Automation.Runspaces.PSSnapInException' }, + @{ Name = 'System.Management.Automation.Runspaces.PipelineReader`1' }, + @{ Name = 'System.Management.Automation.Runspaces.PipelineWriter' }, + @{ Name = 'System.Management.Automation.Tracing.EtwActivity' }, + @{ Name = 'System.Management.Automation.Tracing.PowerShellTraceTask' }, + @{ Name = 'System.Management.Automation.Tracing.PowerShellTraceKeywords' }, + @{ Name = 'System.Management.Automation.Tracing.Tracer' }, + @{ Name = 'System.Management.Automation.Tracing.PowerShellTraceSource' }, + @{ Name = 'System.Management.Automation.Tracing.PowerShellTraceSourceFactory' }, + @{ Name = 'System.Management.Automation.Internal.TransactionParameters' } + } + + It "There should be no types in standard which are not in the product" -skip:(! $assemblyExists) { + Compare-Object -reference $smaT -difference $asmT | ?{$_.SideIndicator -eq '=>' } | Should -BeNullOrEmpty + } + + It " should not be in the standard library" -skip:(! $assemblyExists) -testcase $expectedMissingTypes { + param ( $Name ) + $Name | Should -BeIn @($expectedMissingTypes.Values) + } + } +} diff --git a/test/5/full/PSStandard.csproj b/test/5/full/PSStandard.csproj new file mode 100644 index 0000000..a6f3584 --- /dev/null +++ b/test/5/full/PSStandard.csproj @@ -0,0 +1,12 @@ + + + + net452 + Demo.Cmdlet + + + + + + + From 2b861619e505281eb54be2a589513d52c99b9bb9 Mon Sep 17 00:00:00 2001 From: James Truher Date: Tue, 5 Mar 2019 20:34:50 -0800 Subject: [PATCH 02/11] Fix location of demo assemble for full clr test --- test/3/full/PSS3.Tests.ps1 | 2 +- test/5/full/PSS5.Tests.ps1 | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/test/3/full/PSS3.Tests.ps1 b/test/3/full/PSS3.Tests.ps1 index fb64add..fa5f429 100644 --- a/test/3/full/PSS3.Tests.ps1 +++ b/test/3/full/PSS3.Tests.ps1 @@ -1,6 +1,6 @@ Describe "PowerShell Standard 3" { BeforeAll { - $cmdletAssembly = "bin/Release/netstandard2.0/Demo.Cmdlet.dll" + $cmdletAssembly = "bin/Release/net452/Demo.Cmdlet.dll" $assemblyPath = Join-Path "$PSScriptRoot" $cmdletAssembly $PSBin = (Get-Process -id $PID).MainModule.FileName } diff --git a/test/5/full/PSS5.Tests.ps1 b/test/5/full/PSS5.Tests.ps1 index 5555670..818ec7a 100644 --- a/test/5/full/PSS5.Tests.ps1 +++ b/test/5/full/PSS5.Tests.ps1 @@ -1,8 +1,8 @@ -Describe 'PowerShell Standard 5' { +Describe 'PowerShell Standard 5 - Full CLR' { BeforeAll { $repoRoot = git rev-parse --show-toplevel - $libraryPath = "${repoRoot}/src/5/bin/Release/netstandard2.0/System.Management.Automation.dll" + $libraryPath = "${repoRoot}/src/5/bin/Release/net452/System.Management.Automation.dll" $assemblyExists = test-path $libraryPath if ( $assemblyExists ) { $standardAssembly = [System.Reflection.Assembly]::LoadFile($libraryPath) @@ -11,7 +11,7 @@ Describe 'PowerShell Standard 5' { Context 'Creating a cmdlet' { BeforeAll { - $cmdletAssembly = 'bin/Release/netstandard2.0/Demo.Cmdlet.dll' + $cmdletAssembly = 'bin/Release/net452/Demo.Cmdlet.dll' $assemblyPath = Join-Path "$PSScriptRoot" $cmdletAssembly $PSBin = (Get-Process -id $PID).MainModule.FileName } From 633d1947c87071045df3dc6727f9be5425983f0f Mon Sep 17 00:00:00 2001 From: James Truher Date: Tue, 5 Mar 2019 20:53:40 -0800 Subject: [PATCH 03/11] Update template to use GA release Update signing.xml to use GA release. --- .../Microsoft.PowerShell.Standard.Module.Template.nuspec | 2 +- .../Microsoft.PowerShell.Standard.Module.Template.csproj | 2 +- tools/releaseBuild/signing.xml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.nuspec b/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.nuspec index f5c0437..091bb80 100755 --- a/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.nuspec +++ b/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.nuspec @@ -2,7 +2,7 @@ Microsoft.PowerShell.Standard.Module.Template - 0.1.3 + 0.1.4 PowerShell Standard module Microsoft Microsoft,PowerShellTeam diff --git a/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj b/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj index 75b7bc0..19fa004 100755 --- a/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj +++ b/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj @@ -6,7 +6,7 @@ - + All diff --git a/tools/releaseBuild/signing.xml b/tools/releaseBuild/signing.xml index adcd83b..76a1eac 100644 --- a/tools/releaseBuild/signing.xml +++ b/tools/releaseBuild/signing.xml @@ -6,7 +6,7 @@ dest="__OUTPATHROOT__\release\out\Microsoft.PowerShell.Standard.Module.Template.0.1.3.nupkg" /> - + From 62ef123799184400c8ea73fbdaf099697bca5f38 Mon Sep 17 00:00:00 2001 From: James Truher Date: Tue, 5 Mar 2019 21:16:57 -0800 Subject: [PATCH 04/11] install framework 4.5.2 now that we're building both netstandard2.0 and net452 --- tools/releaseBuild/Image/DockerFile | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/releaseBuild/Image/DockerFile b/tools/releaseBuild/Image/DockerFile index 096c625..f0d43a0 100644 --- a/tools/releaseBuild/Image/DockerFile +++ b/tools/releaseBuild/Image/DockerFile @@ -15,6 +15,7 @@ RUN Import-Module PackageManagement; ` Import-Module ./containerFiles/dockerInstall.psm1; ` Install-ChocolateyPackage -PackageName git -Executable git.exe; ` Install-ChocolateyPackage -PackageName nuget.commandline -Executable nuget.exe -Cleanup; ` + Install-ChocolateyPackage -PackageName netfx-4.5.2-devpack; ` Invoke-WebRequest -Uri https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1 -outfile C:/dotnet-install.ps1; ` C:/dotnet-install.ps1 -Channel Release -Version 2.1.4; ` Add-Path C:/Users/ContainerAdministrator/AppData/Local/Microsoft/dotnet; From 2195070e8f150fa25f1ddd9fa1badc32b528ffbc Mon Sep 17 00:00:00 2001 From: James Truher Date: Tue, 5 Mar 2019 22:36:19 -0800 Subject: [PATCH 05/11] Trying something different, we'll not install the devpack, but install VS2017 --- tools/releaseBuild/Image/DockerFile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/releaseBuild/Image/DockerFile b/tools/releaseBuild/Image/DockerFile index f0d43a0..e974a9b 100644 --- a/tools/releaseBuild/Image/DockerFile +++ b/tools/releaseBuild/Image/DockerFile @@ -15,7 +15,6 @@ RUN Import-Module PackageManagement; ` Import-Module ./containerFiles/dockerInstall.psm1; ` Install-ChocolateyPackage -PackageName git -Executable git.exe; ` Install-ChocolateyPackage -PackageName nuget.commandline -Executable nuget.exe -Cleanup; ` - Install-ChocolateyPackage -PackageName netfx-4.5.2-devpack; ` Invoke-WebRequest -Uri https://raw.githubusercontent.com/dotnet/cli/master/scripts/obtain/dotnet-install.ps1 -outfile C:/dotnet-install.ps1; ` C:/dotnet-install.ps1 -Channel Release -Version 2.1.4; ` Add-Path C:/Users/ContainerAdministrator/AppData/Local/Microsoft/dotnet; @@ -24,8 +23,9 @@ RUN Import-Module PackageManagement; ` # git clone https://Github.com/PowerShell/PSScriptAnalyzer; ` # Install-ChocolateyPackage -PackageName dotnet4.5; -# RUN Import-Module ./containerFiles/dockerInstall.psm1; ` # Install-ChocolateyPackage -PackageName netfx-4.5.1-devpack; +RUN Import-Module ./containerFiles/dockerInstall.psm1; ` + Install-ChocolateyPackage -PackageName visualstudio2017community; COPY buildStandard.ps1 containerFiles/buildStandard.ps1 From d19e622f3ab590a1d7bc07f04bd18f1b78702431 Mon Sep 17 00:00:00 2001 From: James Truher Date: Tue, 5 Mar 2019 22:52:42 -0800 Subject: [PATCH 06/11] Remote install of vs2017, try installing runtime and devpack for 4.7.2 --- tools/releaseBuild/Image/DockerFile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/releaseBuild/Image/DockerFile b/tools/releaseBuild/Image/DockerFile index e974a9b..3fcecad 100644 --- a/tools/releaseBuild/Image/DockerFile +++ b/tools/releaseBuild/Image/DockerFile @@ -25,7 +25,8 @@ RUN Import-Module PackageManagement; ` # Install-ChocolateyPackage -PackageName netfx-4.5.1-devpack; RUN Import-Module ./containerFiles/dockerInstall.psm1; ` - Install-ChocolateyPackage -PackageName visualstudio2017community; + Install-ChocolateyPackage -PackageName netfx-4.7.2-devpack; ` + Install-ChocolateyPackage -PackageName dotnetfx; COPY buildStandard.ps1 containerFiles/buildStandard.ps1 From 76d376683286c07f540c5a409ea5946877279b3f Mon Sep 17 00:00:00 2001 From: James Truher Date: Wed, 6 Mar 2019 13:31:23 -0800 Subject: [PATCH 07/11] pull proper image for building --- tools/releaseBuild/Image/DockerFile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/releaseBuild/Image/DockerFile b/tools/releaseBuild/Image/DockerFile index 3fcecad..628a262 100644 --- a/tools/releaseBuild/Image/DockerFile +++ b/tools/releaseBuild/Image/DockerFile @@ -1,6 +1,6 @@ # escape=` #0.3.6 (no powershell 6) -FROM microsoft/dotnet-framework:4.7.1 +FROM microsoft/dotnet-framework:4.7.2-sdk LABEL maintainer='PowerShell Team ' LABEL description="This Dockerfile for Windows Server Core with git installed via chocolatey." @@ -24,9 +24,9 @@ RUN Import-Module PackageManagement; ` # Install-ChocolateyPackage -PackageName dotnet4.5; # Install-ChocolateyPackage -PackageName netfx-4.5.1-devpack; -RUN Import-Module ./containerFiles/dockerInstall.psm1; ` - Install-ChocolateyPackage -PackageName netfx-4.7.2-devpack; ` - Install-ChocolateyPackage -PackageName dotnetfx; +#RUN Import-Module ./containerFiles/dockerInstall.psm1; ` +# Install-ChocolateyPackage -PackageName netfx-4.7.2-devpack; ` +# Install-ChocolateyPackage -PackageName dotnetfx; COPY buildStandard.ps1 containerFiles/buildStandard.ps1 From b152f8c626dc02eda3a0aa3095f5ffc0ec120612 Mon Sep 17 00:00:00 2001 From: James Truher Date: Wed, 6 Mar 2019 14:10:44 -0800 Subject: [PATCH 08/11] Add tests to be sure the signing file reflects the actual files update the template package version --- PowerShellStandard.psm1 | 9 +++++++++ test/Build.Tests.ps1 | 13 +++++++++++++ tools/releaseBuild/signing.xml | 8 ++++---- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 test/Build.Tests.ps1 diff --git a/PowerShellStandard.psm1 b/PowerShellStandard.psm1 index d6de5df..d357b49 100644 --- a/PowerShellStandard.psm1 +++ b/PowerShellStandard.psm1 @@ -56,6 +56,15 @@ function Start-Clean { function Invoke-Test { param ( [switch]$CoreOnly ) + # first, run the package tests and validate that the signing.xml file is correct + try { + $testBase = Join-Path $PsScriptRoot test + Push-Location $testBase + Invoke-Pester -Path ./Build.Tests.ps1 + } + finally { + Pop-Location + } $versions = 3,5 foreach ( $version in $versions ) { try { diff --git a/test/Build.Tests.ps1 b/test/Build.Tests.ps1 new file mode 100644 index 0000000..b500ba7 --- /dev/null +++ b/test/Build.Tests.ps1 @@ -0,0 +1,13 @@ +Describe "Ensure that the created file versions match what is in the Signing.xml file" { + BeforeAll { + $baseDir = Resolve-Path (Join-Path $PsScriptRoot "..") + $signingFilePath = Join-Path $baseDir "tools/releaseBuild/signing.xml" + $signingXml = [xml](Get-Content $signingFilePath) + $testCases = $signingXml.SelectNodes(".//file").src | + Foreach-Object { @{ FileName = $_.split(([char[]]"/\"))[-1] } } + } + It "the file '' should exist" -testcases $testCases { + param ( $FileName ) + "$baseDir/$fileName" | Should -Exist + } +} diff --git a/tools/releaseBuild/signing.xml b/tools/releaseBuild/signing.xml index 76a1eac..e546cd4 100644 --- a/tools/releaseBuild/signing.xml +++ b/tools/releaseBuild/signing.xml @@ -2,11 +2,11 @@ - - + - From 19f318b31a88b88a9203dfc2fa210c2d9532a724 Mon Sep 17 00:00:00 2001 From: James Truher Date: Thu, 7 Mar 2019 12:02:13 -0800 Subject: [PATCH 09/11] Add usage language to readme --- Images/CopyLocal.png | Bin 0 -> 17752 bytes .../Screen Shot 2019-03-07 at 10.40.09 AM.png | Bin 0 -> 22051 bytes .../Screen Shot 2019-03-07 at 10.42.26 AM.png | Bin 0 -> 13268 bytes README.md | 89 ++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 Images/CopyLocal.png create mode 100644 Images/Screen Shot 2019-03-07 at 10.40.09 AM.png create mode 100644 Images/Screen Shot 2019-03-07 at 10.42.26 AM.png diff --git a/Images/CopyLocal.png b/Images/CopyLocal.png new file mode 100644 index 0000000000000000000000000000000000000000..60e8d347d65a1d25de01a7f37e4dc2c87e44c973 GIT binary patch literal 17752 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 Q4`}nKr>mdKI;Vst011}oe*gdg literal 0 HcmV?d00001 diff --git a/Images/Screen Shot 2019-03-07 at 10.40.09 AM.png b/Images/Screen Shot 2019-03-07 at 10.40.09 AM.png new file mode 100644 index 0000000000000000000000000000000000000000..3d3888d998cf7a05fb97b906fcccfd71e7a0f115 GIT binary patch literal 22051 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

?S|;*{dtlR&OHqcR~g!@V%yzk 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 tkbFT&lW(Lo{T( Nuget Package Manager -> Package Manager Console) type: + +```powershell +install-package -id PowerShellStandard.Library +``` + +This will add `System.Management.Automation` to your project references. +After this, you must set `Copy Local` to False in the Reference Properties pane. + +![Copy Local = False](Images/CopyLocal.png) + +This will keep the PowerShell Standard Library from being copied into your release/publish directories. +This is because the PowerShell Standard Library is a _reference_ assembly and doesn't actually contain any implementations and should never be distributed with your module. +You may now create and build your module in the usual way. + +Once your module is built, you can see the portability of your module very easily, if you have both Windows PowerShell and PowerShell core on your system. +The following demonstrates the portability of using PowerShell Standard. + +The following shows the same assembly being used by both Windows PowerShell, PowerShell Core, and via Docker; PowerShell Core on Linux. + +```powershell +PS> powershell +Windows PowerShell +Copyright (C) Microsoft Corporation. All rights reserved. + +Loading personal and system profiles took 714ms. +PS> gci + + Directory: C:\users\jimtru\documents\visual studio 2017\Projects\ClassLibrary2\ClassLibrary2\bin\Debug + +Mode LastWriteTime Length Name +---- ------------- ------ ---- +-a---- 3/7/2019 10:54 AM 4608 ClassLibrary2.dll +-a---- 3/7/2019 10:54 AM 15872 ClassLibrary2.pdb + +PS> import-module .\ClassLibrary2.dll +PS> "joe","jane" | Invoke-Demo +Hello 'joe' +Hello 'jane' +PS> exit + +PS> pwsh-preview +PowerShell 6.1.0-rc.1 +Copyright (c) Microsoft Corporation. All rights reserved. + +https://aka.ms/pscore6-docs +Type 'help' to get help. + +PS> import-module .\ClassLibrary2.dll +PS> "joe","jane" | Invoke-Demo +Hello 'joe' +Hello 'jane' +PS> exit + +PS> $m = "C:\Users\jimtru\DOCUME~1\VIBB41~1\Projects\CLASSL~2\CLASSL~1\bin\Debug" +PS> docker run --rm -it -v "${m}:/module" mcr.microsoft.com/powershell:preview +PowerShell 6.2.0-rc.1 +Copyright (c) Microsoft Corporation. All rights reserved. + +https://aka.ms/pscore6-docs +Type 'help' to get help. + +PS /> hostname +add7d6ed4818 + +PS /> select-string pretty /etc/os-release +etc/os-release:5:PRETTY_NAME="Ubuntu 18.04.2 LTS" + +PS /> gci /module + Directory: /module +Mode LastWriteTime Length Name +---- ------------- ------ ---- +------ 3/7/19 6:54 PM 4608 ClassLibrary2.dll +------ 3/7/19 6:54 PM 15872 ClassLibrary2.pdbPS /> import-module /module/ClassLibrary2.dll + +PS /> Import-Module /module/ClassLibrary2.dll +PS /> "joe","jane" | Invoke-Demo +Hello 'joe' +Hello 'jane' +``` + +And that's how you can build a single module used by Windows PowerShell, PowerShell Core on Windows and Linux! From 69adbe9df7d8576c11238ac48d94749d101b98c1 Mon Sep 17 00:00:00 2001 From: James Truher Date: Thu, 7 Mar 2019 12:03:11 -0800 Subject: [PATCH 10/11] remove unused screen shots --- .../Screen Shot 2019-03-07 at 10.40.09 AM.png | Bin 22051 -> 0 bytes .../Screen Shot 2019-03-07 at 10.42.26 AM.png | Bin 13268 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 Images/Screen Shot 2019-03-07 at 10.40.09 AM.png delete mode 100644 Images/Screen Shot 2019-03-07 at 10.42.26 AM.png diff --git a/Images/Screen Shot 2019-03-07 at 10.40.09 AM.png b/Images/Screen Shot 2019-03-07 at 10.40.09 AM.png deleted file mode 100644 index 3d3888d998cf7a05fb97b906fcccfd71e7a0f115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22051 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

?S|;*{dtlR&OHqcR~g!@V%yzk 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 tkbFT&lW(Lo{T( Date: Thu, 7 Mar 2019 13:05:14 -0800 Subject: [PATCH 11/11] Changes for release 5.1.1 --- src/5/PowerShellStandard.Library.nuspec | 2 +- src/5/System.Management.Automation-lib.csproj | 2 +- .../Microsoft.PowerShell.Standard.Module.Template.csproj | 2 +- src/dotnetTemplate/README.md | 6 +++--- tools/releaseBuild/signing.xml | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/5/PowerShellStandard.Library.nuspec b/src/5/PowerShellStandard.Library.nuspec index c4d72c4..843274d 100644 --- a/src/5/PowerShellStandard.Library.nuspec +++ b/src/5/PowerShellStandard.Library.nuspec @@ -2,7 +2,7 @@ PowerShellStandard.Library - 5.1.0 + 5.1.1 PowerShellStandard.Library Microsoft Microsoft,PowerShellTeam diff --git a/src/5/System.Management.Automation-lib.csproj b/src/5/System.Management.Automation-lib.csproj index 80c9d10..09923e0 100644 --- a/src/5/System.Management.Automation-lib.csproj +++ b/src/5/System.Management.Automation-lib.csproj @@ -5,7 +5,7 @@ ..\signing\visualstudiopublic.snk System.Management.Automation 3.0.0 - 5.1.0 + 5.1.1 True RUNTIME_SERIALIZATION ./PowershellStandard.Library.nuspec diff --git a/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj b/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj index 19fa004..c0568b5 100755 --- a/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj +++ b/src/dotnetTemplate/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template/Microsoft.PowerShell.Standard.Module.Template.csproj @@ -6,7 +6,7 @@ - + All diff --git a/src/dotnetTemplate/README.md b/src/dotnetTemplate/README.md index e156eed..917903f 100755 --- a/src/dotnetTemplate/README.md +++ b/src/dotnetTemplate/README.md @@ -95,9 +95,9 @@ PowerShell Standard Module (C#) Author: Microsoft Corporation Options: -v|--powershell-standard-version - 5.1.0-preview-03 - PowerShell Standard 5.1 + 5.1.1 - PowerShell Standard 5.1.1 3.0.0-preview-02 - PowerShell Standard 3.0 - Default: 5.1.0-preview-03 + Default: 5.1.1 --no-restore If specified, skips the automatic restore of the project on create. bool - Optional @@ -132,4 +132,4 @@ This template will create: * `*.csproj` - a project file that uses the same name as the folder it was created in * `TestSampleCmdletCommand.cs` - an example PowerShell cmdlet class -* `obj` - a folder generated by the restore \ No newline at end of file +* `obj` - a folder generated by the restore diff --git a/tools/releaseBuild/signing.xml b/tools/releaseBuild/signing.xml index e546cd4..ca58860 100644 --- a/tools/releaseBuild/signing.xml +++ b/tools/releaseBuild/signing.xml @@ -6,7 +6,7 @@ dest="__OUTPATHROOT__\release\out\Microsoft.PowerShell.Standard.Module.Template.0.1.4.nupkg" /> - +