From 2b14dbb399094c5ece2bbcc2439c23676814f0ce Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Thu, 26 Sep 2019 11:45:10 -0400 Subject: [PATCH 1/5] Add Linux and macOS tests --- Source/Directory.Build.targets | 2 +- TestProjects/Linux-C#/Directory.Build.props | 9 + TestProjects/Linux-C#/Linux-CS.sln | 31 +++ TestProjects/Linux-C#/Linux-CS/Linux-CS.sln | 31 +++ .../Linux-CS/cross-ios-netstd2/Class1.cs | 8 + .../cross-ios-netstd2.csproj | 8 + .../Linux-CS/netstd2Library/Class1.cs | 8 + .../netstd2Library/netstd2Library.csproj | 7 + .../Linux-C#/cross-ios-netstd2/Class1.cs | 8 + .../cross-ios-netstd2.csproj | 9 + .../Linux-C#/netstd2Library/Class1.cs | 8 + .../netstd2Library/netstd2Library.csproj | 11 ++ TestProjects/NuGet.config | 6 +- azure-pipelines.yml | 179 +++++++++++++----- 14 files changed, 270 insertions(+), 55 deletions(-) create mode 100644 TestProjects/Linux-C#/Directory.Build.props create mode 100644 TestProjects/Linux-C#/Linux-CS.sln create mode 100644 TestProjects/Linux-C#/Linux-CS/Linux-CS.sln create mode 100644 TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/Class1.cs create mode 100644 TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/cross-ios-netstd2.csproj create mode 100644 TestProjects/Linux-C#/Linux-CS/netstd2Library/Class1.cs create mode 100644 TestProjects/Linux-C#/Linux-CS/netstd2Library/netstd2Library.csproj create mode 100644 TestProjects/Linux-C#/cross-ios-netstd2/Class1.cs create mode 100644 TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj create mode 100644 TestProjects/Linux-C#/netstd2Library/Class1.cs create mode 100644 TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj diff --git a/Source/Directory.Build.targets b/Source/Directory.Build.targets index 8083c21..ec50f5d 100644 --- a/Source/Directory.Build.targets +++ b/Source/Directory.Build.targets @@ -13,7 +13,7 @@ - + diff --git a/TestProjects/Linux-C#/Directory.Build.props b/TestProjects/Linux-C#/Directory.Build.props new file mode 100644 index 0000000..1b460d8 --- /dev/null +++ b/TestProjects/Linux-C#/Directory.Build.props @@ -0,0 +1,9 @@ + + + + $(MSBuildThisFileDirectory) + + + + + \ No newline at end of file diff --git a/TestProjects/Linux-C#/Linux-CS.sln b/TestProjects/Linux-C#/Linux-CS.sln new file mode 100644 index 0000000..d18afbf --- /dev/null +++ b/TestProjects/Linux-C#/Linux-CS.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29230.61 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "netstd2Library", "netstd2Library\netstd2Library.csproj", "{ED027E36-643F-44C0-A297-34D565859D16}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cross-ios-netstd2", "cross-ios-netstd2\cross-ios-netstd2.csproj", "{C87855F6-314C-4BA6-AFA9-F979D8850050}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ED027E36-643F-44C0-A297-34D565859D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED027E36-643F-44C0-A297-34D565859D16}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED027E36-643F-44C0-A297-34D565859D16}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED027E36-643F-44C0-A297-34D565859D16}.Release|Any CPU.Build.0 = Release|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {59FA0C61-E338-40D3-BBB4-966BC1CDB464} + EndGlobalSection +EndGlobal diff --git a/TestProjects/Linux-C#/Linux-CS/Linux-CS.sln b/TestProjects/Linux-C#/Linux-CS/Linux-CS.sln new file mode 100644 index 0000000..d18afbf --- /dev/null +++ b/TestProjects/Linux-C#/Linux-CS/Linux-CS.sln @@ -0,0 +1,31 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.29230.61 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "netstd2Library", "netstd2Library\netstd2Library.csproj", "{ED027E36-643F-44C0-A297-34D565859D16}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "cross-ios-netstd2", "cross-ios-netstd2\cross-ios-netstd2.csproj", "{C87855F6-314C-4BA6-AFA9-F979D8850050}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {ED027E36-643F-44C0-A297-34D565859D16}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {ED027E36-643F-44C0-A297-34D565859D16}.Debug|Any CPU.Build.0 = Debug|Any CPU + {ED027E36-643F-44C0-A297-34D565859D16}.Release|Any CPU.ActiveCfg = Release|Any CPU + {ED027E36-643F-44C0-A297-34D565859D16}.Release|Any CPU.Build.0 = Release|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C87855F6-314C-4BA6-AFA9-F979D8850050}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {59FA0C61-E338-40D3-BBB4-966BC1CDB464} + EndGlobalSection +EndGlobal diff --git a/TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/Class1.cs b/TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/Class1.cs new file mode 100644 index 0000000..39fd8de --- /dev/null +++ b/TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/Class1.cs @@ -0,0 +1,8 @@ +using System; + +namespace cross_ios_netstd2 +{ + public class Class1 + { + } +} diff --git a/TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/cross-ios-netstd2.csproj b/TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/cross-ios-netstd2.csproj new file mode 100644 index 0000000..3ba0986 --- /dev/null +++ b/TestProjects/Linux-C#/Linux-CS/cross-ios-netstd2/cross-ios-netstd2.csproj @@ -0,0 +1,8 @@ + + + + netstandard2.0;xamarinios10 + cross_ios_netstd2 + + + diff --git a/TestProjects/Linux-C#/Linux-CS/netstd2Library/Class1.cs b/TestProjects/Linux-C#/Linux-CS/netstd2Library/Class1.cs new file mode 100644 index 0000000..d146db9 --- /dev/null +++ b/TestProjects/Linux-C#/Linux-CS/netstd2Library/Class1.cs @@ -0,0 +1,8 @@ +using System; + +namespace netstd2Library +{ + public class Class1 + { + } +} diff --git a/TestProjects/Linux-C#/Linux-CS/netstd2Library/netstd2Library.csproj b/TestProjects/Linux-C#/Linux-CS/netstd2Library/netstd2Library.csproj new file mode 100644 index 0000000..9f5c4f4 --- /dev/null +++ b/TestProjects/Linux-C#/Linux-CS/netstd2Library/netstd2Library.csproj @@ -0,0 +1,7 @@ + + + + netstandard2.0 + + + diff --git a/TestProjects/Linux-C#/cross-ios-netstd2/Class1.cs b/TestProjects/Linux-C#/cross-ios-netstd2/Class1.cs new file mode 100644 index 0000000..39fd8de --- /dev/null +++ b/TestProjects/Linux-C#/cross-ios-netstd2/Class1.cs @@ -0,0 +1,8 @@ +using System; + +namespace cross_ios_netstd2 +{ + public class Class1 + { + } +} diff --git a/TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj b/TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj new file mode 100644 index 0000000..314645e --- /dev/null +++ b/TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj @@ -0,0 +1,9 @@ + + + + netstandard2.0;xamarinios10;uap10.0.16299 + netstandard2.0;xamarinios10 + cross_ios_netstd2 + + + diff --git a/TestProjects/Linux-C#/netstd2Library/Class1.cs b/TestProjects/Linux-C#/netstd2Library/Class1.cs new file mode 100644 index 0000000..d146db9 --- /dev/null +++ b/TestProjects/Linux-C#/netstd2Library/Class1.cs @@ -0,0 +1,8 @@ +using System; + +namespace netstd2Library +{ + public class Class1 + { + } +} diff --git a/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj b/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj new file mode 100644 index 0000000..7816d54 --- /dev/null +++ b/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj @@ -0,0 +1,11 @@ + + + + netstandard2.0 + + + + + + + diff --git a/TestProjects/NuGet.config b/TestProjects/NuGet.config index ff2260c..45c8afb 100644 --- a/TestProjects/NuGet.config +++ b/TestProjects/NuGet.config @@ -1,6 +1,6 @@ - + - - + + \ No newline at end of file diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 0f20799..c607718 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,54 +1,131 @@ trigger: - - master - - rel/* +- master +- rel/* pr: - - master - - rel/* - -pool: - vmImage: windows-2019 - -variables: - BuildConfiguration: Release - -steps: -- task: DotNetCoreCLI@2 - inputs: - command: custom - custom: tool - arguments: install --tool-path . nbgv - displayName: Install NBGV tool - -- script: nbgv cloud - displayName: Set Version - -- powershell: | - mkdir $Env:Temp\Packages -Force - displayName: Build - -- task: DotNetCoreCLI@2 - inputs: - command: pack - packagesToPack: Source/MSBuild.Sdk.Extras/MSBuild.Sdk.Extras.csproj - configuration: $(BuildConfiguration) - packDirectory: $(Build.ArtifactStagingDirectory)\Packages - verbosityPack: Minimal - displayName: Build Package - -- task: PowerShell@2 - displayName: Authenticode Sign artifacts - inputs: - filePath: Tools\Sign-Package.ps1 - env: - SignClientUser: $(SignClientUser) - SignClientSecret: $(SignClientSecret) - ArtifactDirectory: $(Build.ArtifactStagingDirectory)\Packages - condition: and(succeeded(), not(eq(variables['build.reason'], 'PullRequest')), not(eq(variables['SignClientSecret'], '')), not(eq(variables['SignClientUser'], ''))) - -- task: PublishBuildArtifacts@1 - displayName: Publish Artifacts - inputs: - pathToPublish: $(Build.ArtifactStagingDirectory)\Packages - artifactType: container - artifactName: Package +- master +- rel/* + +jobs: +- job: Windows + pool: + vmImage: windows-2019 + + variables: + BuildConfiguration: Release + + steps: + - task: DotNetCoreCLI@2 + inputs: + command: custom + custom: tool + arguments: install --tool-path . nbgv + displayName: Install NBGV tool + + - script: nbgv cloud + displayName: Set Version + + - powershell: | + mkdir $Env:Temp\Packages -Force + displayName: Create packages temp folder + + - task: DotNetCoreCLI@2 + inputs: + command: pack + packagesToPack: Source/MSBuild.Sdk.Extras/MSBuild.Sdk.Extras.csproj + configuration: $(BuildConfiguration) + packDirectory: $(Build.ArtifactStagingDirectory)\Packages + verbosityPack: Minimal + displayName: Build Package + + - task: PowerShell@2 + displayName: Authenticode Sign artifacts + inputs: + filePath: Tools\Sign-Package.ps1 + env: + SignClientUser: $(SignClientUser) + SignClientSecret: $(SignClientSecret) + ArtifactDirectory: $(Build.ArtifactStagingDirectory)\Packages + condition: and(succeeded(), not(eq(variables['build.reason'], 'PullRequest')), not(eq(variables['SignClientSecret'], '')), not(eq(variables['SignClientUser'], ''))) + + - task: PublishBuildArtifacts@1 + displayName: Publish Artifacts + inputs: + pathToPublish: $(Build.ArtifactStagingDirectory)\Packages + artifactType: container + artifactName: Package + + +- job: Linux + container: nventive/wasm-build:1.4.1 + pool: + vmImage: 'ubuntu-16.04' + + variables: + BuildConfiguration: Release + TMPDIR: /tmp + DisableNerdBank: true + PackageVersion: 42.42.42 + + steps: + - script: | + mkdir $TMPDIR/Packages + displayName: Create packages temp folder + + - task: DotNetCoreCLI@2 + inputs: + command: pack + packagesToPack: Source/MSBuild.Sdk.Extras/MSBuild.Sdk.Extras.csproj + configuration: $(BuildConfiguration) + packDirectory: $(TMPDIR)/Packages + verbosityPack: Minimal + displayName: Build Package + + - bash: | + dotnet build --configuration Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj + msbuild /r /p:Configuration=Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj + + displayName: '.NET Std Library with unavailable platform test' + + +- job: macOS + + strategy: + matrix: + Xamarin_5_16_0: + XamarinVersion: 5_16_0 + Xamarin_5_12_0: + XamarinVersion: 5_12_0 + + pool: + vmImage: 'macOS-10.13' + + variables: + BuildConfiguration: Release + TMPDIR: /tmp + DisableNerdBank: true + PackageVersion: 42.42.42 + + steps: + + - bash: /bin/bash -c "sudo $AGENT_HOMEDIRECTORY/scripts/select-xamarin-sdk.sh $(XamarinVersion)" + displayName: Select Xamarin Version + + - script: | + mkdir $TMPDIR/Packages + displayName: Create packages temp folder + + - task: DotNetCoreCLI@2 + inputs: + command: pack + packagesToPack: Source/MSBuild.Sdk.Extras/MSBuild.Sdk.Extras.csproj + configuration: $(BuildConfiguration) + packDirectory: $(TMPDIR)/Packages + verbosityPack: Minimal + displayName: Build Package + + - bash: | + dotnet build --configuration Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj + msbuild /r /p:Configuration=Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj + + displayName: '.NET Std Library with unavailable platform test' From 39737a3ed9b3e29ad4f3a4d1e07d00fa679e2965 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Thu, 26 Sep 2019 11:35:47 -0400 Subject: [PATCH 2/5] Always import language targets Fixes an issue where the platform targets are not available (building a netstandard 2.0 project that references a "netstandard2.0;xamarinios10" project on Linux. --- .../Build/LanguageTargets/CheckMissing.targets | 4 ++-- .../Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets b/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets index 92bc34f..d6cbf5b 100644 --- a/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets +++ b/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets @@ -13,7 +13,7 @@ - + @@ -30,7 +30,7 @@ - + diff --git a/TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj b/TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj index 314645e..2bd2016 100644 --- a/TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj +++ b/TestProjects/Linux-C#/cross-ios-netstd2/cross-ios-netstd2.csproj @@ -2,8 +2,6 @@ netstandard2.0;xamarinios10;uap10.0.16299 - netstandard2.0;xamarinios10 - cross_ios_netstd2 From f907e761df4582e420ad748e91162011a3a337ba Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Fri, 27 Sep 2019 06:51:18 -0400 Subject: [PATCH 3/5] Build additional test projects --- azure-pipelines.yml | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index c607718..7cf860d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -55,6 +55,43 @@ jobs: artifactType: container artifactName: Package +- job: Windows_Tests + pool: + vmImage: windows-2019 + + variables: + BuildConfiguration: Release + TMPDIR: $(Build.ArtifactStagingDirectory) + DisableNerdBank: true + PackageVersion: 42.42.42 + + steps: + - powershell: | + mkdir $(Build.ArtifactStagingDirectory)\Packages -Force + displayName: Create packages temp folder + + - task: DotNetCoreCLI@2 + inputs: + command: pack + packagesToPack: Source/MSBuild.Sdk.Extras/MSBuild.Sdk.Extras.csproj + configuration: $(BuildConfiguration) + packDirectory: $(Build.ArtifactStagingDirectory)\Packages + verbosityPack: Minimal + displayName: Build Package + + - task: MSBuild@1 + inputs: + solution: '$(build.sourcesdirectory)\TestProjects\Windows-Desktop-C#\Windows-Desktop.sln' + msbuildArguments: /r /p:SignManifests=false + configution: $(BuildConfiguration) + displayName: MSBuild Test Projects 1 + + - task: MSBuild@1 + inputs: + solution: '$(build.sourcesdirectory)\TestProjects\Linux-C#\netstd2Library\netstd2Library.csproj' + msbuildArguments: /r + configution: $(BuildConfiguration) + displayName: MSBuild Test Projects 2 - job: Linux container: nventive/wasm-build:1.4.1 From 5a6b1f3d5e9d5332827133c2c49eda94a1642963 Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Fri, 27 Sep 2019 09:07:50 -0400 Subject: [PATCH 4/5] Rely on CommonTargetsPath to detect unknown TargetFramework --- .../Build/LanguageTargets/CheckMissing.targets | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets b/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets index d6cbf5b..bf60bb2 100644 --- a/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets +++ b/Source/MSBuild.Sdk.Extras/Build/LanguageTargets/CheckMissing.targets @@ -11,9 +11,16 @@ <_SdkLanguageTargetsMissing Condition="'$(_SdkLanguageTargetsMissing)' == ''">true + + + + <_SdkLanguageTargetsMissing Condition="'$(CommonTargetsPath)'!=''">false + <_SdkLanguageTargetsMissing Condition="'$(_SdkLanguageTargetsMissing)' == ''">true + + - + @@ -30,7 +37,7 @@ - + From 3273038aeef68f61af85bc04fad8d52587aa20aa Mon Sep 17 00:00:00 2001 From: Jerome Laban Date: Fri, 27 Sep 2019 16:09:16 -0400 Subject: [PATCH 5/5] Split tests for macOS and Linux. --- azure-pipelines.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 7cf860d..5538155 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -120,9 +120,13 @@ jobs: - bash: | dotnet build --configuration Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj + + displayName: '.NET Core: .NET Std Library with unavailable platform test' + + - bash: | msbuild /r /p:Configuration=Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj - displayName: '.NET Std Library with unavailable platform test' + displayName: 'MSBuild: .NET Std Library with unavailable platform test' - job: macOS @@ -163,6 +167,10 @@ jobs: - bash: | dotnet build --configuration Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj + + displayName: '.NET Core: .NET Std Library with unavailable platform test' + + - bash: | msbuild /r /p:Configuration=Release $(build.sourcesdirectory)/TestProjects/Linux-C#/netstd2Library/netstd2Library.csproj - displayName: '.NET Std Library with unavailable platform test' + displayName: 'MSBuild: .NET Std Library with unavailable platform test' \ No newline at end of file