build.proj (146 lines of code) (raw):

<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="17.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <PackageVersion Condition=" '$(PackageVersion)' == '' ">1.0.42</PackageVersion> <Build_Number Condition=" '$(Build_Number)' == '' ">0</Build_Number> <Version>$(PackageVersion).$(Build_Number)</Version> </PropertyGroup> <PropertyGroup> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <BinPath>$(MSBuildThisFileDirectory)bin\$(Configuration)</BinPath> <OutPath>$(BinPath)\out</OutPath> <PackagePath>$(BinPath)\package</PackagePath> <PackageCachePath>$(BinPath)\cache</PackageCachePath> <IntegrationTestResults>$(BinPath)\IntegrationTestResults.txt</IntegrationTestResults> </PropertyGroup> <Target Name="Test" DependsOnTargets="IntegrationTest"> <Exec Command='dotnet restore $(MSBuildThisFileDirectory)TeamCity.VSTest.TestLogger.Tests\TeamCity.VSTest.TestLogger.Tests.csproj'/> <Exec Command='dotnet test $(MSBuildThisFileDirectory)TeamCity.VSTest.TestLogger.Tests\TeamCity.VSTest.TestLogger.Tests.csproj -c $(Configuration)'/> </Target> <Target Name="Pack" DependsOnTargets="Build"> <MSBuild Projects="$(MSBuildThisFileDirectory)TeamCity.VSTest.TestLogger\TeamCity.VSTest.TestLogger.csproj" Targets="Pack" Properties="Configuration=$(Configuration);PackageVersion=$(PackageVersion);PublishDir=$(PackagePath)"/> <ItemGroup> <PackageFiles Include="$(MSBuildThisFileDirectory)TeamCity.VSTest.TestLogger\bin\$(configuration)\*.nupkg"/> </ItemGroup> <Copy SourceFiles="@(PackageFiles)" DestinationFolder="$(PackagePath)"/> <Message Text="##teamcity[publishArtifacts '$(PackagePath)\TeamCity.VSTest.TestAdapter.*.nupkg=>.']" /> </Target> <Target Name="Build"> <MSBuild Projects="TeamCity.VSTest.TestAdapter.sln" Targets="Restore"/> <ItemGroup> <VSTestVersion Include="vstest15.3"> <TargetFramework>netstandard1.5</TargetFramework> <VSTestLoggerPath>vstest15</VSTestLoggerPath> <AssemblyName>TeamCity.VSTest.TestLogger</AssemblyName> </VSTestVersion> <VSTestVersion Include="vstest15"> <TargetFramework>netstandard1.5</TargetFramework> <VSTestLoggerPath>vstest15</VSTestLoggerPath> <AssemblyName>TeamCity.VSTest.TestAdapter</AssemblyName> </VSTestVersion> <VSTestVersion Include="vstest14"> <TargetFramework>net40</TargetFramework> <VSTestLoggerPath>vstest14</VSTestLoggerPath> <AssemblyName>TeamCity.VSTest.TestAdapter</AssemblyName> </VSTestVersion> <VSTestVersion Include="vstest12"> <TargetFramework>net35</TargetFramework> <VSTestLoggerPath>vstest12</VSTestLoggerPath> <AssemblyName>TeamCity.VSTest.TestAdapter</AssemblyName> </VSTestVersion> </ItemGroup> <RemoveDir Directories="$(BinPath)" ContinueOnError="True" /> <MSBuild Projects="$(MSBuildProjectFile)" Targets="Publish" Properties="Configuration=$(Configuration);TargetFramework=%(VSTestVersion.TargetFramework);VSTestLoggerPath=%(VSTestVersion.VSTestLoggerPath);Version=$(Version);AssemblyName=%(VSTestVersion.AssemblyName)"/> <Message Text="##teamcity[publishArtifacts '$(OutPath)\**\*.dll=>TeamCity.VSTest.TestLogger.zip']" /> </Target> <Target Name="ClearNugetCache"> <Exec Command="dotnet nuget locals global-packages --list" ConsoleToMsBuild="true"> <Output TaskParameter="ConsoleOutput" ItemName="GlobaPackagesInfo" /> </Exec> <PropertyGroup> <CachePath>@(GlobaPackagesInfo->Replace("info : global-packages:", "")->Trim())</CachePath> </PropertyGroup> <Message Text='CachePath=$(CachePath)' /> <RemoveDir Directories="$(CachePath)teamcity.vstest.testadapter\$(PackageVersion)" ContinueOnError="True" /> </Target> <Target Name="Publish"> <PropertyGroup> <PublishPath>$(BinPath)\$(VSTestLoggerPath)</PublishPath> <OutPath>$(OutPath)\$(VSTestLoggerPath)</OutPath> </PropertyGroup> <MSBuild Projects="$(MSBuildThisFileDirectory)TeamCity.VSTest.TestLogger\TeamCity.VSTest.TestLogger.csproj" Targets="Publish" Properties="Configuration=$(Configuration);Version=$(Version);TargetFramework=$(TargetFramework);PublishDir=$(PublishPath)"/> <ItemGroup> <AdapterFiles Include="$(PublishPath)\TeamCity.*.dll"/> <AdapterFiles Include="$(PublishPath)\IoC*.dll"/> </ItemGroup> <Move SourceFiles="@(AdapterFiles)" DestinationFolder="$(OutPath)"/> <RemoveDir Directories="$(PublishPath)" ContinueOnError="True" /> </Target> <Target Name="IntegrationTest" DependsOnTargets="Pack;ClearNugetCache"> <Message Text='"$(MSBuildToolsPath)\msbuild.exe" "$(MSBuildThisFileFullPath)" /t:DispatchIntegrationTest /p:Configuration=$(Configuration) > "$(IntegrationTestResults)"' /> <Message Text='WorkingDirectory="$(MSBuildThisFileDirectory)"' /> <Exec Command='"$(MSBuildToolsPath)\msbuild.exe" "$(MSBuildThisFileFullPath)" /t:DispatchIntegrationTest /p:Configuration=$(Configuration) > "$(IntegrationTestResults)"' WorkingDirectory="$(MSBuildThisFileDirectory)"/> </Target> <Target Name="DispatchIntegrationTest"> <ItemGroup> <DotnetTool Include='$(ProgramW6432)\dotnet\sdk\**\dotnet.dll'/> </ItemGroup> <MSBuild Projects="$(MSBuildProjectFile)" Targets="DotnetIntegrationTest" Properties='Configuration=$(Configuration);DotnetPath=%(DotnetTool.Identity);TestProjectName=MS.Tests;DotnetMessagesCount=34;MSBuildMessagesCount=15'/> <MSBuild Projects="$(MSBuildProjectFile)" Targets="DotnetIntegrationTest" Properties='Configuration=$(Configuration);DotnetPath=%(DotnetTool.Identity);TestProjectName=XUnit.Tests;DotnetMessagesCount=24;MSBuildMessagesCount=10'/> <MSBuild Projects="$(MSBuildProjectFile)" Targets="DotnetIntegrationTest" Properties='Configuration=$(Configuration);DotnetPath=%(DotnetTool.Identity);TestProjectName=Dual.Tests;DotnetMessagesCount=24;MSBuildMessagesCount=12'/> </Target> <Target Name="DotnetIntegrationTest"> <PropertyGroup> <DotnetDir>$([System.IO.Path]::GetDirectoryName("$(DotnetPath)"))</DotnetDir> <DotnetVersion>$([System.IO.Path]::GetFileName("$(DotnetDir)"))</DotnetVersion> <DotnetVersionName>$(DotnetVersion)</DotnetVersionName> <DotnetVersionName Condition=" '$(DotnetVersionName)' == '' ">Default</DotnetVersionName> <TestProject>IntegrationTests\$(TestProjectName)\$(TestProjectName).csproj</TestProject> <TestAssembly>IntegrationTests\$(TestProjectName)\bin\$(Configuration)\net452\$(TestProjectName).dll</TestAssembly> <CleanCommand>dotnet clean "$(TestProject)" -c $(Configuration)</CleanCommand> <RestoreCommand>dotnet restore "$(TestProject)" --packages "$(PackageCachePath)" --no-cache "/p:RestoreAdditionalProjectSources=$(PackagePath)"</RestoreCommand> <BuildCommand>dotnet build "$(TestProject)" -c $(Configuration) "/p:RestoreAdditionalProjectSources=$(PackagePath)"</BuildCommand> <TestCommand>dotnet test "$(TestProject)" -c $(Configuration) --no-build --verbosity normal</TestCommand> <MSBuildTestCommand>"C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" "$(TestAssembly)" /Logger:logger://teamcity /TestAdapterPath:. /Framework:Framework45</MSBuildTestCommand> </PropertyGroup> <Message Text="Create global.json" /> <ItemGroup> <GlobalJsonFile Include="IntegrationTests\global.json"/> <GlobalJsonFileLine Include='{'/> <GlobalJsonFileLine Include=' "sdk": {'/> <GlobalJsonFileLine Include=' "version": "$(DotnetVersionName)"'/> <GlobalJsonFileLine Include=' }'/> <GlobalJsonFileLine Include='}'/> </ItemGroup> <WriteLinesToFile File="@(GlobalJsonFile)" Lines="@(GlobalJsonFileLine)" Overwrite="true" Encoding="UTF-8"/> <Message Text="!!!Start" /> <Message Text="Dotnet: $(DotnetVersionName), TestProject: $(TestProjectName)" /> <Message Text="!!!Commands" /> <Message Text="$(CleanCommand)" /> <Message Text="$(RestoreCommand)" /> <Message Text="$(BuildCommand)" /> <Message Text="$(TestCommand)" /> <Message Text="$(MSBuildTestCommand)" Condition=" '$(DotnetVersion)' == '' "/> <Message Text="!!!Results" /> <Exec Command='$(CleanCommand)'><Output TaskParameter="ExitCode" PropertyName="ErrorCode"/></Exec> <Message Importance="high" Text="Exit code of $(CleanCommand): $(ErrorCode)"/> <Exec Command='$(RestoreCommand)'><Output TaskParameter="ExitCode" PropertyName="ErrorCode"/></Exec> <Message Importance="high" Text="Exit code of $(RestoreCommand): $(ErrorCode)"/> <Exec Command='$(BuildCommand)'><Output TaskParameter="ExitCode" PropertyName="ErrorCode"/></Exec> <Message Importance="high" Text="Exit code of $(BuildCommand): $(ErrorCode)"/> <Message Text="!!!Messages:$(DotnetMessagesCount)" /> <Exec IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" Command='$(TestCommand)'><Output TaskParameter="ExitCode" PropertyName="ErrorCode"/></Exec> <Message Importance="high" Text="Exit code of $(TestCommand): $(ErrorCode)"/> <Message Text="!!!Messages:$(MSBuildMessagesCount)" Condition=" '$(DotnetVersion)' == '' "/> <Exec IgnoreExitCode="true" IgnoreStandardErrorWarningFormat="true" Condition=" '$(DotnetVersion)' == '' " Command='$(MSBuildTestCommand)'><Output TaskParameter="ExitCode" PropertyName="ErrorCode"/></Exec> <Message Importance="high" Text="Exit code of $(MSBuildTestCommand): $(ErrorCode)"/> <Message Text="!!!Finish" /> </Target> </Project>