Update build script, re-map VS versions
Extensions should never reference a newer target framework than net46 in VS2017, as documented in https://github.com/github/VisualStudio/issues/1849#issuecomment-411570902. Therefore, we redesigned the mapping so it's now: | TargetFramework | Visual Studio | |-------|------| | net45 | 2013 | | net452| 2015 | | net46 | 2017 | | net47 | 2019 | Switch to using Microsoft.Build.Locator instead of hacking MSBuild to force it to resolve properly. We now run the tests against the same MSBuild that built the tests.
This commit is contained in:
Родитель
0c649bc966
Коммит
1b86784def
137
build.cmd
137
build.cmd
|
@ -1,137 +0,0 @@
|
||||||
@echo off
|
|
||||||
setlocal enabledelayedexpansion
|
|
||||||
|
|
||||||
set BatchFile=%0
|
|
||||||
set Root=%~dp0
|
|
||||||
set NodeReuse=true
|
|
||||||
set MultiProcessor=/m
|
|
||||||
set BuildConfiguration=Release
|
|
||||||
set MSBuildTarget=/t:All
|
|
||||||
set MSBuildAdditionalArguments=
|
|
||||||
|
|
||||||
REM Turn on MSBuild async logging to speed up builds
|
|
||||||
set MSBUILDLOGASYNC=1
|
|
||||||
set MSBUILDDISABLENODEREUSE=1
|
|
||||||
|
|
||||||
:ParseArguments
|
|
||||||
if "%1" == "" goto :DoneParsing
|
|
||||||
if /I "%1" == "/?" call :Usage && exit /b 1
|
|
||||||
if /I "%1" == "/debug" set BuildConfiguration=Debug&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/release" set BuildConfiguration=Release&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/all" set MSBuildTarget=/t:All&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/build" set MSBuildTarget=/t:Build&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/clean" set MSBuildTarget=/t:Clean&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/rebuild" set MSBuildTarget=/t:Rebuild&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/restore" set MSBuildTarget=/t:Restore&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/test" set MSBuildTarget=/t:Test&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/acceptance" set MSBuildTarget=/t:Acceptance&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/update" set MSBuildTarget=/t:Update&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/no-node-reuse" set NodeReuse=false&&shift&& goto :ParseArguments
|
|
||||||
if /I "%1" == "/no-multi-proc" set MultiProcessor=&&shift&& goto :ParseArguments
|
|
||||||
set MSBuildAdditionalArguments=%1 %MSBuildAdditionalArguments%&&shift&& goto :ParseArguments
|
|
||||||
:DoneParsing
|
|
||||||
|
|
||||||
:: Detect if MSBuild is in the path
|
|
||||||
for /f "delims=" %%i in ('where msbuild') do set "MSBuildPath=%%i" & goto :MSBuildPathDone
|
|
||||||
:MSBuildPathDone
|
|
||||||
|
|
||||||
if not exist "%MSBuildPath%" (
|
|
||||||
call :PrintColor Red "To build this repository, MSBuild.exe must be in the PATH."
|
|
||||||
echo MSBuild is included with Visual Studio 2017 or later.
|
|
||||||
echo.
|
|
||||||
echo If Visual Studio is not installed, visit this page to download:
|
|
||||||
echo.
|
|
||||||
echo https://www.visualstudio.com/vs/
|
|
||||||
echo.
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Detect MSBuild version >= 15
|
|
||||||
for /f "delims=" %%i in ('msbuild -nologo -version') do set MSBuildFullVersion=%%i
|
|
||||||
for /f "delims=. tokens=1" %%a in ("%MSBuildFullVersion%") do (
|
|
||||||
set MSBuildMajorVersion=%%a
|
|
||||||
)
|
|
||||||
|
|
||||||
if %MSBuildMajorVersion% LSS 15 (
|
|
||||||
call :PrintColor Red "To build this repository, the MSBuild.exe in the PATH needs to be 15.0 or higher."
|
|
||||||
echo MSBuild 15.0 is included with Visual Studio 2017 or later.
|
|
||||||
echo.
|
|
||||||
echo If Visual Studio is not installed, visit this page to download:
|
|
||||||
echo.
|
|
||||||
echo https://www.visualstudio.com/vs/
|
|
||||||
echo.
|
|
||||||
echo Located MSBuild in the PATH was "%MSBuildPath%".
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
:: Ensure developer command prompt variables are set
|
|
||||||
if "%VisualStudioVersion%" == "" (
|
|
||||||
for /f "delims=" %%i in ('msbuild -nologo %Root%build\corebuild.targets /t:GetVsInstallRoot /v:minimal') do set "VsInstallRoot=%%i" & goto :VsInstallRootDone
|
|
||||||
:VsInstallRootDone
|
|
||||||
for /f "tokens=* delims= " %%i in ("%VsInstallRoot%") do set "VsInstallRoot=%%i"
|
|
||||||
set "DeveloperCommandPrompt=%VsInstallRoot%\Common7\Tools\VsDevCmd.bat"
|
|
||||||
if not exist "%DeveloperCommandPrompt%" (
|
|
||||||
call :PrintColor Red "Failed to locate 'Common7\Tools\VsDevCmd.bat' under the reported Visual Studio installation root '%VsInstallRoot%'."
|
|
||||||
echo.
|
|
||||||
echo If Visual Studio is not installed, visit this page to download:
|
|
||||||
echo.
|
|
||||||
echo https://www.visualstudio.com/vs/
|
|
||||||
echo.
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
call "%DeveloperCommandPrompt%" || goto :BuildFailed
|
|
||||||
)
|
|
||||||
|
|
||||||
:: We pass the bare target name as /p:target so that build script can condition behavior accordingly, if necessary
|
|
||||||
set MSBuildTargetName=%MSBuildTarget:~3%
|
|
||||||
|
|
||||||
taskkill /f /im MSBuild.exe /fi "memusage gt 40" >NUL
|
|
||||||
|
|
||||||
@echo on
|
|
||||||
msbuild "%Root%build.proj" /nologo /nr:%NodeReuse% %MultiProcessor% %MSBuildTarget% /p:target=%MSBuildTargetName% /p:Configuration=%BuildConfiguration% /p:NuGetBuildTasksPackTargets=NO-SDK-PACK %MSBuildAdditionalArguments%
|
|
||||||
|
|
||||||
@echo off
|
|
||||||
|
|
||||||
if ERRORLEVEL 1 (
|
|
||||||
taskkill /f /im MSBuild.exe /fi "memusage gt 40" >NUL
|
|
||||||
echo.
|
|
||||||
call :PrintColor Red "Build failed, for full log see msbuild.log."
|
|
||||||
exit /b 1
|
|
||||||
)
|
|
||||||
|
|
||||||
taskkill /f /im MSBuild.exe /fi "memusage gt 40" >NUL
|
|
||||||
echo.
|
|
||||||
call :PrintColor Cyan "Build completed successfully, for full log see msbuild.log"
|
|
||||||
|
|
||||||
exit /b 0
|
|
||||||
|
|
||||||
:Usage
|
|
||||||
echo Usage: %BatchFile% [/all^|/build^|/clean^|/rebuild^|/restore^|/test^|/acceptance^|/update^] [/debug^|/release] [/no-node-reuse] [/no-multi-proc] [OPTIONS]
|
|
||||||
echo.
|
|
||||||
echo Build targets:
|
|
||||||
echo /all Runs clean, restore, build and test
|
|
||||||
echo /build Runs build
|
|
||||||
echo /clean Cleans bin,obj,.vs folders.
|
|
||||||
echo /rebuild Runs clean, restore, then build
|
|
||||||
echo /restore Restore NuGet packages
|
|
||||||
echo /test Runs the unit tests
|
|
||||||
echo /acceptance Runs the (long-running) acceptance tests
|
|
||||||
echo /update Updates corebuild (build script itself) dependencies
|
|
||||||
echo.
|
|
||||||
echo Build options:
|
|
||||||
echo /debug Perform debug build (/p:Configuration=Debug)
|
|
||||||
echo /release Perform release build (/p:Configuration=Release). Default.
|
|
||||||
echo /no-node-reuse Prevents MSBuild from reusing existing MSBuild instances,
|
|
||||||
echo useful for avoiding unexpected behavior on build machines ('/nr:false' switch)
|
|
||||||
echo /no-multi-proc No multi-proc build, useful for diagnosing build logs (no '/m' switch)
|
|
||||||
echo /noautoresponse Do not process the msbuild.rsp response file options
|
|
||||||
echo
|
|
||||||
echo [OPTIONS] Arbitrary MSBuild switches can also be passed in.
|
|
||||||
goto :eof
|
|
||||||
|
|
||||||
:BuildFailed
|
|
||||||
call :PrintColor Red "Build failed with ERRORLEVEL %ERRORLEVEL%"
|
|
||||||
exit /b 1
|
|
||||||
|
|
||||||
:PrintColor
|
|
||||||
"%Windir%\System32\WindowsPowerShell\v1.0\Powershell.exe" -noprofile write-host -foregroundcolor %1 "'%2'"
|
|
55
build.proj
55
build.proj
|
@ -1,5 +1,4 @@
|
||||||
<Project DefaultTargets="Build" TreatAsLocalProperty="Configuration">
|
<Project Sdk="CoreBuild/1.0.0-alpha" DefaultTargets="Build" TreatAsLocalProperty="Configuration">
|
||||||
<Import Project="build\corebuild.props" />
|
|
||||||
<Import Project="src\Directory.Build.props"/>
|
<Import Project="src\Directory.Build.props"/>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
@ -16,9 +15,9 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="xunit.runner.console" Version="2.3.1" />
|
<PackageReference Include="xunit.runner.console" Version="2.4.0" />
|
||||||
<PackageReference Include="Sleet.Azure" Version="*" />
|
<PackageReference Include="Sleet.Azure" Version="0.2.5" />
|
||||||
<PackageReference Include="JsonPoke.MSBuild" Version="*" />
|
<PackageReference Include="JsonPoke.MSBuild" Version="1.0.9" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemDefinitionGroup>
|
<ItemDefinitionGroup>
|
||||||
|
@ -31,15 +30,14 @@
|
||||||
<Solution Include="src\*.sln" />
|
<Solution Include="src\*.sln" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Target Name="Configure" DependsOnTargets="Restore" />
|
||||||
|
|
||||||
<Target Name="Build" DependsOnTargets="Version">
|
<Target Name="Build" DependsOnTargets="Version">
|
||||||
<Message Text="##vso[build.updatebuildnumber]$(PackageVersion)" Importance="high" Condition="'$(TF_BUILD)' == 'true'" />
|
<Message Text="##vso[build.updatebuildnumber]$(PackageVersion)" Importance="high" Condition="'$(TF_BUILD)' == 'true'" />
|
||||||
|
|
||||||
<MakeDir Directories="$(Out)" Condition="!Exists('$(Out)')" />
|
<MakeDir Directories="$(Out)" Condition="!Exists('$(Out)')" />
|
||||||
<MSBuild Projects="@(Solution)" Targets="Build" />
|
<MSBuild Projects="@(Solution)" Targets="Build" />
|
||||||
|
|
||||||
<!-- Also build the tests for Dev14 (by default it's only compiled for dev15) -->
|
|
||||||
<MSBuild Projects="test\Xamarin.VSSDK.Tests\Xamarin.VSSDK.Tests.csproj" Targets="Build" Properties="$(AdditionalProperties);Dev=14.0" />
|
|
||||||
|
|
||||||
<Copy SourceFiles="NuGet.Config" DestinationFolder="$(Out)" />
|
<Copy SourceFiles="NuGet.Config" DestinationFolder="$(Out)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
@ -57,46 +55,6 @@
|
||||||
<Exec Command='"$(Sleet)" delete -i Xamarin.VSSDK.BuildTools -v $(DeleteVersion) -s feed -c $(_SleetConfig)' ContinueOnError='true' />
|
<Exec Command='"$(Sleet)" delete -i Xamarin.VSSDK.BuildTools -v $(DeleteVersion) -s feed -c $(_SleetConfig)' ContinueOnError='true' />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Target Name="Test" DependsOnTargets="Build">
|
|
||||||
<PropertyGroup>
|
|
||||||
<XmlTestFile>$(Out)\TestResults.xml</XmlTestFile>
|
|
||||||
<HtmlTestFile>$(Out)\TestResults.html</HtmlTestFile>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<_TestAssembly Include="test\**\bin\**\*Tests.dll" />
|
|
||||||
<TestAssembly Include="@(_TestAssembly)"
|
|
||||||
Condition="$([System.String]::new('%(Filename)').EndsWith('AcceptanceTests')) == 'false' And '%(Filename)' != 'Roslyn.Services.Editor.UnitTests'" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<Exec Command=""$(XunitConsolePathX86)" "@(TestAssembly, '" "')" $(XunitOptions) -html "$(HtmlTestFile)" -xml "$(XmlTestFile)""
|
|
||||||
Condition="'@(TestAssembly)' != ''">
|
|
||||||
<Output TaskParameter="ExitCode" PropertyName="ExitCode" />
|
|
||||||
</Exec>
|
|
||||||
|
|
||||||
<Message Text="All tests passed, for full log see $(HtmlTestFile)" Condition="'@(TestAssembly)' != '' And '$(ExitCode)' == '0'" Importance="high" />
|
|
||||||
<Error Text="There were test failures, for full log see $(HtmlTestFile)" Condition="'@(TestAssembly)' != '' And '$(ExitCode)' != '0'" />
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="Acceptance" DependsOnTargets="Build">
|
|
||||||
<PropertyGroup>
|
|
||||||
<XmlTestFile>$(Out)AcceptanceResults.xml</XmlTestFile>
|
|
||||||
<HtmlTestFile>$(Out)AcceptanceResults.html</HtmlTestFile>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<TestAssembly Include="test\**\bin\**\*AcceptanceTests.dll" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<Exec Command=""$(XunitConsolePathX86)" "@(TestAssembly, '" "')" $(XunitOptions) -html "$(HtmlTestFile)" -xml "$(XmlTestFile)""
|
|
||||||
Condition="'@(TestAssembly)' != ''">
|
|
||||||
<Output TaskParameter="ExitCode" PropertyName="ExitCode" />
|
|
||||||
</Exec>
|
|
||||||
|
|
||||||
<Message Text="All tests passed, for full log see $(HtmlTestFile)" Condition="'@(TestAssembly)' != '' And '$(ExitCode)' == '0'" Importance="high" />
|
|
||||||
<Error Text="There were test failures, for full log see $(HtmlTestFile)" Condition="'@(TestAssembly)' != '' And '$(ExitCode)' != '0'" />
|
|
||||||
</Target>
|
|
||||||
|
|
||||||
<Target Name="Clean">
|
<Target Name="Clean">
|
||||||
<Exec Command='for /d /r . %%d in (bin,obj,.vs) do @if exist "%%d" rd /s/q "%%d"'
|
<Exec Command='for /d /r . %%d in (bin,obj,.vs) do @if exist "%%d" rd /s/q "%%d"'
|
||||||
Condition="'$(OS)' == 'Windows_NT'" />
|
Condition="'$(OS)' == 'Windows_NT'" />
|
||||||
|
@ -111,5 +69,4 @@
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<Import Project="src\Version.targets" />
|
<Import Project="src\Version.targets" />
|
||||||
<Import Project="build\corebuild.targets" />
|
|
||||||
</Project>
|
</Project>
|
13
build.yml
13
build.yml
|
@ -17,14 +17,23 @@ steps:
|
||||||
solution: build.proj
|
solution: build.proj
|
||||||
msbuildArguments: /t:Build /p:Out="$(Build.ArtifactStagingDirectory)" /bl:"$(Build.ArtifactStagingDirectory)\build.binlog"
|
msbuildArguments: /t:Build /p:Out="$(Build.ArtifactStagingDirectory)" /bl:"$(Build.ArtifactStagingDirectory)\build.binlog"
|
||||||
|
|
||||||
|
- task: VSTest@2
|
||||||
|
displayName: Test
|
||||||
|
inputs:
|
||||||
|
testAssemblyVer2: |-
|
||||||
|
**\*.Tests.dll
|
||||||
|
!**\xunit*.dll
|
||||||
|
codeCoverageEnabled: 'true'
|
||||||
|
publishRunAttachments: 'true'
|
||||||
|
|
||||||
- task: MSBuild@1
|
- task: MSBuild@1
|
||||||
displayName: Publish
|
displayName: Push
|
||||||
inputs:
|
inputs:
|
||||||
solution: build.proj
|
solution: build.proj
|
||||||
msbuildArguments: /t:Publish /p:Out="$(Build.ArtifactStagingDirectory)" /p:StorageAccessKey=$(StorageAccessKey) /bl:"$(Build.ArtifactStagingDirectory)\push.binlog"
|
msbuildArguments: /t:Publish /p:Out="$(Build.ArtifactStagingDirectory)" /p:StorageAccessKey=$(StorageAccessKey) /bl:"$(Build.ArtifactStagingDirectory)\push.binlog"
|
||||||
|
|
||||||
- task: PublishBuildArtifacts@1
|
- task: PublishBuildArtifacts@1
|
||||||
displayName: Publish Artifact
|
displayName: Publish
|
||||||
condition: always()
|
condition: always()
|
||||||
inputs:
|
inputs:
|
||||||
PathtoPublish: $(Build.ArtifactStagingDirectory)
|
PathtoPublish: $(Build.ArtifactStagingDirectory)
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
|
|
||||||
<Message Text="VsixID = $(VsixID)" />
|
<Message Text="VsixID = $(VsixID)" />
|
||||||
<Message Text="VsixVersion = $(VsixVersion)" />
|
<Message Text="VsixVersion = $(VsixVersion)" />
|
||||||
<Message Text="VsixDeploymentPath = $(VsixDeplsoymentPath)" />
|
<Message Text="VsixDeploymentPath = $(VsixDeploymentPath)" />
|
||||||
|
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
|
|
|
@ -16,14 +16,29 @@
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageFile Include="Microsoft.VisualStudio.SDK.VsixSuppression" Kind="Dependency" Version="14.1.33" TargetFramework="any" />
|
<PackageFile Include="Microsoft.VisualStudio.SDK.VsixSuppression" Kind="Dependency" Version="14.1.37" TargetFramework="any" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Label="Visual Studio 2013">
|
||||||
|
<PackageFile Include="Microsoft.VSSDK.BuildTools" Version="12.0.21005" Kind="Dependency" TargetFramework="net45" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Label="Visual Studio 2015">
|
||||||
|
<PackageFile Include="Microsoft.VSSDK.BuildTools" Version="14.3.25420" Kind="Dependency" TargetFramework="net452" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Label="Visual Studio 2017">
|
||||||
|
<PackageFile Include="Microsoft.VSSDK.BuildTools" Version="15.7.109" Kind="Dependency" TargetFramework="net46" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Label="Visual Studio 2019">
|
||||||
|
<PackageFile Include="Microsoft.VSSDK.BuildTools" Version="15.7.109" Kind="Dependency" TargetFramework="net47" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.VSSDK.BuildTools" Version="15.0.26201" PrivateAssets="all" />
|
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.7.179" PrivateAssets="all" />
|
||||||
<PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.1.1012" PrivateAssets="all" />
|
|
||||||
<PackageReference Include="netfx-System.StringResources" Version="3.1.5" PrivateAssets="all" />
|
<PackageReference Include="netfx-System.StringResources" Version="3.1.5" PrivateAssets="all" />
|
||||||
<PackageReference Include="NuGet.Build.Packaging" Version="0.1.323" />
|
<PackageReference Include="NuGet.Build.Packaging" Version="0.1.323" PrivateAssets="all" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
@ -9,14 +9,16 @@
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- Default $(Dev) according to either '.' value or $(ActiveDebugFramework). These are explicit user-chosen values -->
|
<!-- Default $(Dev) according to either '.' value or $(ActiveDebugFramework). These are explicit user-chosen values -->
|
||||||
<Dev Condition="'$(Dev)' == '.'">$(VisualStudioVersion)</Dev>
|
<Dev Condition="'$(Dev)' == '.'">$(VisualStudioVersion)</Dev>
|
||||||
<Dev Condition="'$(Dev)' == '' And '$(ActiveDebugFramework)' == 'net462'">15.0</Dev>
|
<Dev Condition="'$(Dev)' == '' And '$(ActiveDebugFramework)' == 'net47'">16.0</Dev>
|
||||||
<Dev Condition="'$(Dev)' == '' And '$(ActiveDebugFramework)' == 'net461'">14.0</Dev>
|
<Dev Condition="'$(Dev)' == '' And '$(ActiveDebugFramework)' == 'net46'">15.0</Dev>
|
||||||
<Dev Condition="'$(Dev)' == '' And '$(ActiveDebugFramework)' == 'net46'">12.0</Dev>
|
<Dev Condition="'$(Dev)' == '' And '$(ActiveDebugFramework)' == 'net452'">14.0</Dev>
|
||||||
|
<Dev Condition="'$(Dev)' == '' And '$(ActiveDebugFramework)' == 'net45'">12.0</Dev>
|
||||||
|
|
||||||
<!-- If no ActiveDebugFramework was set, just set it to the one we determined, for consistency -->
|
<!-- If no ActiveDebugFramework was set, just set it to the one we determined, for consistency -->
|
||||||
<ActiveDebugFramework Condition="'$(Dev)' == '15.0'">net462</ActiveDebugFramework>
|
<ActiveDebugFramework Condition="'$(Dev)' == '16.0'">net47</ActiveDebugFramework>
|
||||||
<ActiveDebugFramework Condition="'$(Dev)' == '14.0'">net461</ActiveDebugFramework>
|
<ActiveDebugFramework Condition="'$(Dev)' == '15.0'">net46</ActiveDebugFramework>
|
||||||
<ActiveDebugFramework Condition="'$(Dev)' == '12.0'">net46</ActiveDebugFramework>
|
<ActiveDebugFramework Condition="'$(Dev)' == '14.0'">net452</ActiveDebugFramework>
|
||||||
|
<ActiveDebugFramework Condition="'$(Dev)' == '12.0'">net45</ActiveDebugFramework>
|
||||||
|
|
||||||
<XamarinVSSDKDefaultsImported>true</XamarinVSSDKDefaultsImported>
|
<XamarinVSSDKDefaultsImported>true</XamarinVSSDKDefaultsImported>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- VSIX projects generate a temp project file which doesnt have any extension and needs to be built as C# projects.
|
<!-- VSIX projects generate a temp project file which doesnt have any extension and needs to be built as C# projects.
|
||||||
The .NET SDK just imporrts Microsoft.Common.CurrentVersion.targets.
|
The .NET SDK just imports Microsoft.Common.CurrentVersion.targets.
|
||||||
So set LanguageTargets to import CSharp.targets if the extension is unknown -->
|
So set LanguageTargets to import CSharp.targets if the extension is unknown -->
|
||||||
<PropertyGroup Condition="'$(LanguageTargets)' == ''">
|
<PropertyGroup Condition="'$(LanguageTargets)' == ''">
|
||||||
<LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.csproj' OR '$(Language)' == 'C#'">$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
|
<LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.csproj' OR '$(Language)' == 'C#'">$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
|
||||||
|
|
|
@ -25,37 +25,41 @@
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
<ItemGroup Label="Visual Studio 2013">
|
<ItemGroup Label="Visual Studio 2013">
|
||||||
<PackageFile Include="VSSDK_Reference_Assemblies" Version="12.0.21005" Kind="Dependency" TargetFramework="net46" />
|
<PackageFile Include="VSSDK_Reference_Assemblies" Version="12.0.21005" Kind="Dependency" TargetFramework="net45" />
|
||||||
|
|
||||||
<!-- Missing EnvDTE + VSLangProj -->
|
<!-- Missing EnvDTE + VSLangProj -->
|
||||||
<PackageFile Include="EnvDTE100" Version="10.0.1" Kind="Dependency" TargetFramework="net46" />
|
<PackageFile Include="EnvDTE100" Version="10.0.1" Kind="Dependency" TargetFramework="net45" />
|
||||||
<PackageFile Include="VSLangProj100" Version="10.0.30319" Kind="Dependency" TargetFramework="net46" />
|
<PackageFile Include="VSLangProj100" Version="10.0.30319" Kind="Dependency" TargetFramework="net45" />
|
||||||
<PackageFile Include="VSLangProj110" Version="11.0.61030" Kind="Dependency" TargetFramework="net46" />
|
<PackageFile Include="VSLangProj110" Version="11.0.61030" Kind="Dependency" TargetFramework="net45" />
|
||||||
|
|
||||||
<!-- Workaround for warning on wrong dep. for 12.0.* -->
|
<!-- Workaround for warning on wrong dep. for 12.0.* -->
|
||||||
<PackageFile Include="Microsoft.VisualStudio.Threading" Version="12.2.0" Kind="Dependency" TargetFramework="net46" />
|
<PackageFile Include="Microsoft.VisualStudio.Threading" Version="12.2.0" Kind="Dependency" TargetFramework="net45" />
|
||||||
<PackageFile Include="VSSDK.Shell.12" Version="12.0.4" Kind="Dependency" TargetFramework="net46" />
|
<PackageFile Include="VSSDK.Shell.12" Version="12.0.4" Kind="Dependency" TargetFramework="net45" />
|
||||||
<PackageFile Include="VSSDK.ComponentModelHost" Version="12.0.4" Kind="Dependency" TargetFramework="net46" />
|
<PackageFile Include="VSSDK.ComponentModelHost" Version="12.0.4" Kind="Dependency" TargetFramework="net45" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Label="Visual Studio 2015">
|
<ItemGroup Label="Visual Studio 2015">
|
||||||
<PackageFile Include="VSSDK_Reference_Assemblies" Version="14.3.25407" Kind="Dependency" TargetFramework="net461" />
|
<PackageFile Include="VSSDK_Reference_Assemblies" Version="14.3.25407" Kind="Dependency" TargetFramework="net452" />
|
||||||
|
|
||||||
<!-- Missing EnvDTE + VSLangProj -->
|
<!-- Missing EnvDTE + VSLangProj -->
|
||||||
<PackageFile Include="EnvDTE100" Version="10.0.1" Kind="Dependency" TargetFramework="net461" />
|
<PackageFile Include="EnvDTE100" Version="10.0.1" Kind="Dependency" TargetFramework="net452" />
|
||||||
<PackageFile Include="VSLangProj100" Version="10.0.30319" Kind="Dependency" TargetFramework="net461" />
|
<PackageFile Include="VSLangProj100" Version="10.0.30319" Kind="Dependency" TargetFramework="net452" />
|
||||||
<PackageFile Include="VSLangProj110" Version="11.0.61030" Kind="Dependency" TargetFramework="net461" />
|
<PackageFile Include="VSLangProj110" Version="11.0.61030" Kind="Dependency" TargetFramework="net452" />
|
||||||
<PackageFile Include="VSLangProj140" Version="14.0.25029" Kind="Dependency" TargetFramework="net461" />
|
<PackageFile Include="VSLangProj140" Version="14.0.25029" Kind="Dependency" TargetFramework="net452" />
|
||||||
|
|
||||||
<PackageFile Include="Microsoft.VisualStudio.ComponentModelHost" Version="14.0.25424" TargetFramework="net461" Kind="Dependency" />
|
<PackageFile Include="Microsoft.VisualStudio.ComponentModelHost" Version="14.0.25424" TargetFramework="net452" Kind="Dependency" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Label="Visual Studio 2017">
|
<ItemGroup Label="Visual Studio 2017">
|
||||||
<PackageFile Include="VSSDK_Reference_Assemblies" Version="15.0.26608" TargetFramework="net462" Kind="Dependency" />
|
<PackageFile Include="VSSDK_Reference_Assemblies" Version="15.0.26608" TargetFramework="net46" Kind="Dependency" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup Label="Visual Studio 2019">
|
||||||
|
<PackageFile Include="VSSDK_Reference_Assemblies" Version="15.0.26608" TargetFramework="net47" Kind="Dependency" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="NuGet.Build.Packaging" Version="0.1.323" />
|
<PackageReference Include="NuGet.Build.Packaging" Version="0.1.323" PrivateAssets="all" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
|
@ -3,9 +3,10 @@
|
||||||
Declare our supported frameworks so they show up in the target framework selection dropdown.
|
Declare our supported frameworks so they show up in the target framework selection dropdown.
|
||||||
-->
|
-->
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<SupportedTargetFramework Include="net462" DisplayName="Visual Studio 2017" />
|
<SupportedTargetFramework Include="net47" DisplayName="Visual Studio 2019" />
|
||||||
<SupportedTargetFramework Include="net461" DisplayName="Visual Studio 2015" />
|
<SupportedTargetFramework Include="net46" DisplayName="Visual Studio 2017" />
|
||||||
<SupportedTargetFramework Include="net46" DisplayName="Visual Studio 2013" />
|
<SupportedTargetFramework Include="net452" DisplayName="Visual Studio 2015" />
|
||||||
|
<SupportedTargetFramework Include="net45" DisplayName="Visual Studio 2013" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
|
@ -8,9 +8,10 @@
|
||||||
$(TargetFrameworks), or alternatively, by the Framework selector dropdown in 15.3+
|
$(TargetFrameworks), or alternatively, by the Framework selector dropdown in 15.3+
|
||||||
-->
|
-->
|
||||||
<PropertyGroup Condition="'$(Dev)' == ''">
|
<PropertyGroup Condition="'$(Dev)' == ''">
|
||||||
<Dev Condition="'$(TargetFramework)' == 'net462'">15.0</Dev>
|
<Dev Condition="'$(TargetFramework)' == 'net47'">16.0</Dev>
|
||||||
<Dev Condition="'$(TargetFramework)' == 'net461'">14.0</Dev>
|
<Dev Condition="'$(TargetFramework)' == 'net46'">15.0</Dev>
|
||||||
<Dev Condition="'$(TargetFramework)' == 'net46'">12.0</Dev>
|
<Dev Condition="'$(TargetFramework)' == 'net452'">14.0</Dev>
|
||||||
|
<Dev Condition="'$(TargetFramework)' == 'net45'">12.0</Dev>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
|
|
|
@ -25,15 +25,17 @@
|
||||||
cross-targeting build.
|
cross-targeting build.
|
||||||
-->
|
-->
|
||||||
<PropertyGroup Condition="'$(Dev)' != ''">
|
<PropertyGroup Condition="'$(Dev)' != ''">
|
||||||
<TargetFrameworks Condition="'$(Dev)' == '15.0'">net462</TargetFrameworks>
|
<TargetFrameworks Condition="'$(Dev)' == '16.0'">net47</TargetFrameworks>
|
||||||
<TargetFrameworks Condition="'$(Dev)' == '14.0'">net461</TargetFrameworks>
|
<TargetFrameworks Condition="'$(Dev)' == '15.0'">net46</TargetFrameworks>
|
||||||
<TargetFrameworks Condition="'$(Dev)' == '12.0'">net46</TargetFrameworks>
|
<TargetFrameworks Condition="'$(Dev)' == '14.0'">net452</TargetFrameworks>
|
||||||
|
<TargetFrameworks Condition="'$(Dev)' == '12.0'">net45</TargetFrameworks>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<PropertyGroup Condition="'$(TargetFramework)' == '' and '$(BuildingInsideVisualStudio)' == 'true'">
|
<PropertyGroup Condition="'$(TargetFramework)' == '' and '$(BuildingInsideVisualStudio)' == 'true'">
|
||||||
<TargetFrameworks Condition="'$(VisualStudioVersion)' == '15.0'">net462</TargetFrameworks>
|
<TargetFrameworks Condition="'$(VisualStudioVersion)' == '16.0'">net47</TargetFrameworks>
|
||||||
<TargetFrameworks Condition="'$(VisualStudioVersion)' == '14.0'">net461</TargetFrameworks>
|
<TargetFrameworks Condition="'$(VisualStudioVersion)' == '15.0'">net46</TargetFrameworks>
|
||||||
<TargetFrameworks Condition="'$(VisualStudioVersion)' == '12.0'">net46</TargetFrameworks>
|
<TargetFrameworks Condition="'$(VisualStudioVersion)' == '14.0'">net452</TargetFrameworks>
|
||||||
|
<TargetFrameworks Condition="'$(VisualStudioVersion)' == '12.0'">net45</TargetFrameworks>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<!-- Visual Studio 15.3+ supports cross-targeting and loading the right MSBuild tasks version for each inner build
|
<!-- Visual Studio 15.3+ supports cross-targeting and loading the right MSBuild tasks version for each inner build
|
||||||
|
@ -43,16 +45,18 @@
|
||||||
<Target Name="EnsureNoCrossTargeting" BeforeTargets="Build"
|
<Target Name="EnsureNoCrossTargeting" BeforeTargets="Build"
|
||||||
Condition="'$(BuildingInsideVisualStudio)' != 'true' and $(TargetFrameworks.Contains(';')) and '$(TargetFramework)' == '' and '$(ExcludeRestorePackageImports)' != 'true'">
|
Condition="'$(BuildingInsideVisualStudio)' != 'true' and $(TargetFrameworks.Contains(';')) and '$(TargetFramework)' == '' and '$(ExcludeRestorePackageImports)' != 'true'">
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<TargetedVisualStudio DisplayName="Visual Studio 2013 (net46, Dev=12.0)" Condition="$(TargetFrameworks.Contains('net46'))" />
|
<TargetedVisualStudio DisplayName="Visual Studio 2013 (net45, Dev=12.0)" Condition="$(TargetFrameworks.Contains('net45'))" />
|
||||||
<TargetedVisualStudio DisplayName="Visual Studio 2015 (net461, Dev=14.0)" Condition="$(TargetFrameworks.Contains('net461'))" />
|
<TargetedVisualStudio DisplayName="Visual Studio 2015 (net452, Dev=14.0)" Condition="$(TargetFrameworks.Contains('net452'))" />
|
||||||
<TargetedVisualStudio DisplayName="Visual Studio 2017 (net462, Dev=15.0)" Condition="$(TargetFrameworks.Contains('net462'))" />
|
<TargetedVisualStudio DisplayName="Visual Studio 2017 (net46, Dev=15.0)" Condition="$(TargetFrameworks.Contains('net46'))" />
|
||||||
|
<TargetedVisualStudio DisplayName="Visual Studio 2019 (net47, Dev=16.0)" Condition="$(TargetFrameworks.Contains('net47'))" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<Error Code="XVSSDK0001" Text="In order to build cross-targeting VSIXes, each targeted IDE must be built separately.
|
<Error Code="XVSSDK0001" Text="In order to build cross-targeting VSIXes, each targeted IDE must be built separately.
|
||||||
You can use either /p:TargetFramework or the aliased /p:Dev property to build for each.
|
You can use either /p:TargetFramework or the aliased /p:Dev property to build for each.
|
||||||
For Visual Studio 2013, specify: /p:Dev=12.0 or /p:TargetFramework=net46
|
For Visual Studio 2013, specify: /p:Dev=12.0 or /p:TargetFramework=net45
|
||||||
For Visual Studio 2015, specify: /p:Dev=14.0 or /p:TargetFramework=net461
|
For Visual Studio 2015, specify: /p:Dev=14.0 or /p:TargetFramework=net452
|
||||||
For Visual Studio 2017, specify: /p:Dev=15.0 or /p:TargetFramework=net462
|
For Visual Studio 2017, specify: /p:Dev=15.0 or /p:TargetFramework=net46
|
||||||
|
For Visual Studio 2019, specify: /p:Dev=16.0 or /p:TargetFramework=net47
|
||||||
|
|
||||||
The current project targets: @(TargetedVisualStudio, ',')." />
|
The current project targets: @(TargetedVisualStudio, ',')." />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
|
@ -34,7 +34,7 @@ AssemblyVersion=$(AssemblyVersion)" />
|
||||||
</Target>
|
</Target>
|
||||||
|
|
||||||
<!-- '$(ExcludeRestorePackageImports)' == 'true' when invoking /t:Restore -->
|
<!-- '$(ExcludeRestorePackageImports)' == 'true' when invoking /t:Restore -->
|
||||||
<Target Name="SetVersion" BeforeTargets="Build;GetPackageVersion" DependsOnTargets="GitVersion" Condition="'$(ExcludeRestorePackageImports)' != 'true'">
|
<Target Name="SetVersion" BeforeTargets="GetAssemblyVersion;GetPackageVersion" DependsOnTargets="GitVersion" Condition="'$(ExcludeRestorePackageImports)' != 'true'">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<!-- PR builds are *always* prerelease -->
|
<!-- PR builds are *always* prerelease -->
|
||||||
<!-- TFS case: BUILD_REASON=PullRequest and BUILD_SOURCEBRANCH=refs/pull/#/merge -->
|
<!-- TFS case: BUILD_REASON=PullRequest and BUILD_SOURCEBRANCH=refs/pull/#/merge -->
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 15
|
# Visual Studio Version 16
|
||||||
VisualStudioVersion = 15.0.27110.0
|
VisualStudioVersion = 16.0.28021.4002
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.VSSDK", "VSSDK\Xamarin.VSSDK.csproj", "{8224B403-29E1-49D9-B023-D82C2A0CA807}"
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Xamarin.VSSDK", "VSSDK\Xamarin.VSSDK.csproj", "{8224B403-29E1-49D9-B023-D82C2A0CA807}"
|
||||||
EndProject
|
EndProject
|
||||||
|
@ -10,7 +10,6 @@ EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{99515836-5C56-48C5-88A1-74F0029FA2C5}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{99515836-5C56-48C5-88A1-74F0029FA2C5}"
|
||||||
ProjectSection(SolutionItems) = preProject
|
ProjectSection(SolutionItems) = preProject
|
||||||
..\.editorconfig = ..\.editorconfig
|
..\.editorconfig = ..\.editorconfig
|
||||||
..\build.cmd = ..\build.cmd
|
|
||||||
..\build.proj = ..\build.proj
|
..\build.proj = ..\build.proj
|
||||||
..\build.yml = ..\build.yml
|
..\build.yml = ..\build.yml
|
||||||
Directory.Build.props = Directory.Build.props
|
Directory.Build.props = Directory.Build.props
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<!-- MSBuild 4 > 15.1 -->
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Build" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Build.Framework" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Build.Tasks.Core" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Build.Utilities.Core" culture="neutral" publicKeyToken="b03f5f7f11d50a3a" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="15.1.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -14,7 +14,7 @@ using Xunit.Abstractions;
|
||||||
/// automatic solution-configuration generation for
|
/// automatic solution-configuration generation for
|
||||||
/// P2P references.
|
/// P2P references.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static partial class Builder
|
static partial class Builder
|
||||||
{
|
{
|
||||||
const string ToolsVersion = "15.0";
|
const string ToolsVersion = "15.0";
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
internal static class ModuleInitializer
|
||||||
|
{
|
||||||
|
internal static void Run()
|
||||||
|
{
|
||||||
|
Microsoft.Build.Locator.MSBuildLocator.RegisterMSBuildPath(ThisAssembly.Project.Properties.MSBuildBinPath);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,9 +11,9 @@ namespace Xamarin.VSSDK.Tests
|
||||||
public class TargetsTests
|
public class TargetsTests
|
||||||
{
|
{
|
||||||
// This resolves the SDKs to the same location that was used to compile this project.
|
// This resolves the SDKs to the same location that was used to compile this project.
|
||||||
static TargetsTests() => Environment.SetEnvironmentVariable(
|
//static TargetsTests() => Environment.SetEnvironmentVariable(
|
||||||
nameof(ThisAssembly.Project.Properties.MSBuildSDKsPath),
|
// nameof(ThisAssembly.Project.Properties.MSBuildSDKsPath),
|
||||||
ThisAssembly.Project.Properties.MSBuildSDKsPath);
|
// ThisAssembly.Project.Properties.MSBuildSDKsPath);
|
||||||
|
|
||||||
ITestOutputHelper output;
|
ITestOutputHelper output;
|
||||||
|
|
||||||
|
@ -24,10 +24,11 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new ProjectInstance("Template.csproj", new Dictionary<string, string>
|
var project = new ProjectInstance("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
|
Builder.Build(project, "Restore");
|
||||||
var result = Builder.Build(project, "Build");
|
var result = Builder.Build(project, "Build");
|
||||||
|
|
||||||
Assert.Equal(BuildResultCode.Failure, result.BuildResult.OverallResult);
|
Assert.Equal(BuildResultCode.Failure, result.BuildResult.OverallResult);
|
||||||
|
@ -39,11 +40,12 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new ProjectInstance("Template.csproj", new Dictionary<string, string>
|
var project = new ProjectInstance("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "BuildingInsideVisualStudio", "true" },
|
{ "BuildingInsideVisualStudio", "true" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
|
Builder.Build(project, "Restore");
|
||||||
var result = Builder.Build(project, "Build");
|
var result = Builder.Build(project, "Build");
|
||||||
|
|
||||||
Assert.Equal(BuildResultCode.Success, result.BuildResult.OverallResult);
|
Assert.Equal(BuildResultCode.Success, result.BuildResult.OverallResult);
|
||||||
|
@ -55,13 +57,13 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new Project("Template.csproj", new Dictionary<string, string>
|
var project = new Project("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "ActiveDebugFramework", "net461" },
|
{ "ActiveDebugFramework", "net452" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
{ "BuildingInsideVisualStudio", "true" }
|
{ "BuildingInsideVisualStudio", "true" }
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
Assert.Equal("net461", project.GetPropertyValue("TargetFramework"));
|
Assert.Equal("net452", project.GetPropertyValue("TargetFramework"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
@ -69,12 +71,12 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new Project("Template.csproj", new Dictionary<string, string>
|
var project = new Project("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "ActiveDebugFramework", "net461" },
|
{ "ActiveDebugFramework", "net452" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
Assert.NotEqual("net461", project.GetPropertyValue("TargetFramework"));
|
Assert.NotEqual("net452", project.GetPropertyValue("TargetFramework"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
@ -82,12 +84,12 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new Project("Template.csproj", new Dictionary<string, string>
|
var project = new Project("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "Dev", "15.0" },
|
{ "Dev", "15.0" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
Assert.Equal("net462", project.GetPropertyValue("TargetFrameworks"));
|
Assert.Equal("net46", project.GetPropertyValue("TargetFrameworks"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
@ -95,14 +97,14 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new Project("Template.csproj", new Dictionary<string, string>
|
var project = new Project("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "ActiveDebugFramework", "net461" },
|
{ "ActiveDebugFramework", "net452" },
|
||||||
{ "Dev", "15.0" },
|
{ "Dev", "15.0" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
{ "BuildingInsideVisualStudio", "true" },
|
{ "BuildingInsideVisualStudio", "true" },
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
Assert.Equal("net462", project.GetPropertyValue("TargetFramework"));
|
Assert.Equal("net46", project.GetPropertyValue("TargetFramework"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
@ -110,12 +112,12 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new Project("Template.csproj", new Dictionary<string, string>
|
var project = new Project("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "Dev", "15.0" },
|
{ "Dev", "15.0" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
Assert.Equal("net462", project.GetPropertyValue("TargetFrameworks"));
|
Assert.Equal("net46", project.GetPropertyValue("TargetFrameworks"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
@ -123,8 +125,8 @@ namespace Xamarin.VSSDK.Tests
|
||||||
{
|
{
|
||||||
var project = new Project("Template.csproj", new Dictionary<string, string>
|
var project = new Project("Template.csproj", new Dictionary<string, string>
|
||||||
{
|
{
|
||||||
{ "TargetFrameworks", "net46;net461;net462" },
|
{ "TargetFrameworks", "net45;net452;net46" },
|
||||||
{ "TargetFramework", "net461" },
|
{ "TargetFramework", "net452" },
|
||||||
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
{ "Configuration", ThisAssembly.Project.Properties.Configuration },
|
||||||
}, "15.0", new ProjectCollection());
|
}, "15.0", new ProjectCollection());
|
||||||
|
|
||||||
|
|
|
@ -2,15 +2,14 @@
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using Microsoft.Build.Framework;
|
||||||
using Xunit.Abstractions;
|
using Xunit.Abstractions;
|
||||||
|
|
||||||
namespace Microsoft.Build.Framework
|
|
||||||
{
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fake build engine for unit testing Tasks without spinning up
|
/// Fake build engine for unit testing Tasks without spinning up
|
||||||
/// MSBuild.
|
/// MSBuild.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MockBuildEngine : IBuildEngine
|
class MockBuildEngine : IBuildEngine
|
||||||
{
|
{
|
||||||
bool trace = false;
|
bool trace = false;
|
||||||
ITestOutputHelper output;
|
ITestOutputHelper output;
|
||||||
|
@ -90,4 +89,3 @@ namespace Microsoft.Build.Framework
|
||||||
output.WriteLine(message);
|
output.WriteLine(message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace NuGet.Build.Packaging
|
namespace NuGet.Build.Packaging
|
||||||
{
|
{
|
||||||
public static class TaskItemExtensions
|
static class TaskItemExtensions
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Checks if the given item has metadata key/values matching the
|
/// Checks if the given item has metadata key/values matching the
|
||||||
|
|
|
@ -5,13 +5,11 @@ using Xunit.Abstractions;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// xunit logger > MSBuild logger
|
/// xunit logger > MSBuild logger
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class TestOutputLogger : ILogger
|
class TestOutputLogger : ILogger
|
||||||
{
|
{
|
||||||
ITestOutputHelper output;
|
|
||||||
|
|
||||||
public TestOutputLogger(ITestOutputHelper output, LoggerVerbosity? verbosity = LoggerVerbosity.Quiet)
|
public TestOutputLogger(ITestOutputHelper output, LoggerVerbosity? verbosity = LoggerVerbosity.Quiet)
|
||||||
{
|
{
|
||||||
this.output = output;
|
this.Output = output;
|
||||||
Verbosity = verbosity.GetValueOrDefault();
|
Verbosity = verbosity.GetValueOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -24,7 +22,7 @@ public class TestOutputLogger : ILogger
|
||||||
FinishedTasks = new List<TaskFinishedEventArgs>();
|
FinishedTasks = new List<TaskFinishedEventArgs>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ITestOutputHelper Output => output;
|
public ITestOutputHelper Output { get; }
|
||||||
|
|
||||||
public LoggerVerbosity Verbosity { get; set; }
|
public LoggerVerbosity Verbosity { get; set; }
|
||||||
|
|
||||||
|
@ -46,7 +44,7 @@ public class TestOutputLogger : ILogger
|
||||||
eventSource.AnyEventRaised += (sender, e) =>
|
eventSource.AnyEventRaised += (sender, e) =>
|
||||||
{
|
{
|
||||||
if (!(e is BuildMessageEventArgs) && Verbosity > LoggerVerbosity.Normal)
|
if (!(e is BuildMessageEventArgs) && Verbosity > LoggerVerbosity.Normal)
|
||||||
output?.WriteLine(e.Message);
|
Output?.WriteLine(e.Message);
|
||||||
};
|
};
|
||||||
|
|
||||||
eventSource.MessageRaised += (sender, e) =>
|
eventSource.MessageRaised += (sender, e) =>
|
||||||
|
@ -65,21 +63,21 @@ public class TestOutputLogger : ILogger
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Verbosity != LoggerVerbosity.Quiet && shouldLog)
|
if (Verbosity != LoggerVerbosity.Quiet && shouldLog)
|
||||||
output?.WriteLine(e.Message);
|
Output?.WriteLine(e.Message);
|
||||||
|
|
||||||
Messages.Add(e);
|
Messages.Add(e);
|
||||||
};
|
};
|
||||||
|
|
||||||
eventSource.ErrorRaised += (sender, e) =>
|
eventSource.ErrorRaised += (sender, e) =>
|
||||||
{
|
{
|
||||||
output?.WriteLine(e.Message);
|
Output?.WriteLine(e.Message);
|
||||||
Errors.Add(e);
|
Errors.Add(e);
|
||||||
};
|
};
|
||||||
|
|
||||||
eventSource.WarningRaised += (sender, e) =>
|
eventSource.WarningRaised += (sender, e) =>
|
||||||
{
|
{
|
||||||
if (Verbosity != LoggerVerbosity.Quiet)
|
if (Verbosity != LoggerVerbosity.Quiet)
|
||||||
output?.WriteLine(e.Message);
|
Output?.WriteLine(e.Message);
|
||||||
|
|
||||||
Warnings.Add(e);
|
Warnings.Add(e);
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>net462</TargetFramework>
|
<TargetFramework>net46</TargetFramework>
|
||||||
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
|
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
|
||||||
|
@ -40,37 +40,39 @@
|
||||||
<ThisAssemblyProjectProperty Include="CSharpCoreTargetsPath" />
|
<ThisAssemblyProjectProperty Include="CSharpCoreTargetsPath" />
|
||||||
<ThisAssemblyProjectProperty Include="RoslynTargetsPath" />
|
<ThisAssemblyProjectProperty Include="RoslynTargetsPath" />
|
||||||
<ThisAssemblyProjectProperty Include="MSBuildSDKsPath" />
|
<ThisAssemblyProjectProperty Include="MSBuildSDKsPath" />
|
||||||
|
<ThisAssemblyProjectProperty Include="MSBuildBinPath" />
|
||||||
<ThisAssemblyProjectProperty Include="MSBuildExtensionsPath" />
|
<ThisAssemblyProjectProperty Include="MSBuildExtensionsPath" />
|
||||||
<ThisAssemblyProjectProperty Include="NuGetRestoreTargets" />
|
<ThisAssemblyProjectProperty Include="NuGetRestoreTargets" />
|
||||||
|
|
||||||
<!-- Need to deploy Roslyn code analysis/compiler for VSIX build/deploy to succeed -->
|
<!--
|
||||||
|
Need to deploy Roslyn code analysis/compiler for VSIX build/deploy to succeed --><!--
|
||||||
<None Include="$(RoslynTargetsPath)\*.*">
|
<None Include="$(RoslynTargetsPath)\*.*">
|
||||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
<Link>Roslyn\%(Filename)%(Extension)</Link>
|
<Link>Roslyn\%(Filename)%(Extension)</Link>
|
||||||
<Visible>false</Visible>
|
<Visible>false</Visible>
|
||||||
</None>
|
</None>
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- Hide contentFiles coming from nuget packages (in particular, Microsoft.Build.Runtime) -->
|
<!-- Hide contentFiles coming from nuget packages (in particular, Microsoft.Build.Runtime) -->
|
||||||
|
<!--
|
||||||
<None Update="@(None)">
|
<None Update="@(None)">
|
||||||
<Visible>$([MSBuild]::ValueOrDefault('%(None.NuGetPackageId)', '').Equals(''))</Visible>
|
<Visible>$([MSBuild]::ValueOrDefault('%(None.NuGetPackageId)', '').Equals(''))</Visible>
|
||||||
</None>
|
</None>
|
||||||
<Folder Update="15.0">
|
-->
|
||||||
<Visible>false</Visible>
|
|
||||||
</Folder>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Microsoft.Build.Logging.StructuredLogger" Version="1.1.168" />
|
|
||||||
<PackageReference Include="System.IO.Compression" Version="4.3.0" />
|
<PackageReference Include="System.IO.Compression" Version="4.3.0" />
|
||||||
<PackageReference Include="MSBuilder.ThisAssembly.Project" Version="0.3.4" />
|
<PackageReference Include="MSBuilder.ThisAssembly.Project" Version="0.3.4" />
|
||||||
|
<PackageReference Include="InjectModuleInitializer" Version="2.0.0" />
|
||||||
<PackageReference Include="Mvp.Xml" Version="2.3.0" />
|
<PackageReference Include="Mvp.Xml" Version="2.3.0" />
|
||||||
<PackageReference Include="xunit" Version="2.3.1" />
|
<PackageReference Include="xunit" Version="2.4.0" />
|
||||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
|
||||||
<PackageReference Include="xunit.vsix" Version="0.3.12-beta" />
|
<PackageReference Include="xunit.vsix" Version="0.3.12-beta" />
|
||||||
<PackageReference Include="Microsoft.Build" Version="15.3.409" />
|
<PackageReference Include="Microsoft.Build" Version="15.8.166" ExcludeAssets="runtime" />
|
||||||
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="15.3.409" />
|
<PackageReference Include="Microsoft.Build.Tasks.Core" Version="15.8.166" ExcludeAssets="runtime" />
|
||||||
<!-- Allows loading and evaluating 15.3+ projects -->
|
<PackageReference Include="Microsoft.Build.Locator" Version="1.0.18" />
|
||||||
<PackageReference Include="Microsoft.Build.Runtime" Version="15.3.409" />
|
<PackageReference Include="Microsoft.Build.Logging.StructuredLogger" Version="1.1.168" />
|
||||||
<!-- Allows loading and evaluating VSSDK projects -->
|
<!-- Allows loading and evaluating VSSDK projects -->
|
||||||
<PackageReference Include="VSSDK_Reference_Assemblies" Version="15.0.26608" />
|
<PackageReference Include="VSSDK_Reference_Assemblies" Version="15.0.26608" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
{
|
{
|
||||||
"methodDisplay": "method"
|
"methodDisplay": "method",
|
||||||
|
"shadowCopy": false
|
||||||
}
|
}
|
Загрузка…
Ссылка в новой задаче