TFS 2018 上的 MSBuild 任务因错误的 .net SDK 路径而失败
MSBuild Task on TFS 2018 failing with the wrong .net SDK Path
我有一个 MSBuild 任务要在 TFS 2018 [本地] 上构建服务结构项目。该解决方案使用 Visual Studio 2019 和 MSBuild 在本地构建良好。它在 TFS 构建代理上失败并出现错误..
Error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.1. Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.1.
我明确配置了 MSBuild 任务以使用 "C:\Program Files (x86)\Microsoft Visual Studio19\Professional\MSBuild\Current\Bin\msbuild.exe"
我正在使用具有以下参数的 MSBuild 任务..
/p:Deterministic=true /t:Package /p:PackageLocation=$(build.artifactstagingdirectory)\applicationpackage
TFS Build 代理安装了 Visual Studio 2017 和 2019。它还安装了 .Net 核心 SDK 3.1。 [3.1.100 版本].
出于某种原因,构建输出显示正在从 "C:\Program Files\dotnet\sdk.1.602" 中获取 SDK。
需要使用"C:\Program Files\dotnet\sdk.1.100"
的SDK
如何强制 MSBuild 任务使用 C:\Program Files\dotnet\sdk.1.100.
中的 SDK
我无法将 "Nuget tools installer" 任务添加到管道中,因为我们的构建代理无法访问互联网
注意:当我们使用 .net core 2.2 时,该项目在 TFS 中使用来自 Visual Studio 2017 构建任务的 MSBuild 构建良好。
我们不得不将一个项目升级到 .net core 3.1 和 VS 2019,它破坏了 TFS 中的构建。
SFProj 文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets=";ValidateMSBuildFiles">
<Import Project="..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" />
<PropertyGroup Label="Globals">
<ProjectGuid>3b02cfa3-a4c3-49ea-9186-64ae171d64a7</ProjectGuid>
<ProjectVersion>2.3</ProjectVersion>
<MinToolsVersion>1.5</MinToolsVersion>
<SupportedMSBuildNuGetPackageVersion>1.6.7</SupportedMSBuildNuGetPackageVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<None Include="ApplicationParameters\Local.1Node.xml" />
<None Include="ApplicationParameters\Local.5Node.xml" />
<None Include="PublishProfiles\Local.1Node.xml" />
<None Include="PublishProfiles\Local.5Node.xml" />
<None Include="Scripts\Deploy-FabricApplication.ps1" />
</ItemGroup>
<ItemGroup>
<Content Include="ApplicationPackageRoot\ApplicationManifest.xml" />
<Content Include="ApplicationParameters\Params.xml" />
<Content Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Stateful1.csproj" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<PropertyGroup>
<ApplicationProjectTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets</ApplicationProjectTargetsPath>
</PropertyGroup>
<Import Project="$(ApplicationProjectTargetsPath)" Condition="Exists('$(ApplicationProjectTargetsPath)')" />
<Import Project="..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" />
<Target Name="ValidateMSBuildFiles" BeforeTargets="PrepareForBuild">
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" Text="Unable to find the '..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" Text="Unable to find the '..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
</Target>
</Project>
The TFS Build agent has both Visual Studio 2017 and 2019 installed. It
also has the .Net core SDK 3.1 installed. [3.1.100 version].
For some reason the build output shows that the SDK is being picked up
from "C:\Program Files\dotnet\sdk.1.602". It needs to use the SDK
from "C:\Program Files\dotnet\sdk.1.100"
定位问题原因:
在你的msbuild任务之前添加一个command-line task,让它执行dotnet --info
命令来输出你构建中使用的真实sdk版本。检查它是否使用 3.1.100 版本。
(正常情况下,dotnet --info
会输出可用的最新sdk版本)
可能的解决方法:
1.For代理本身:由于.net core SDK 3.1.100
支持VS2019 16.4及以上版本。因此尝试将 TFS 代理中的 VS2019 更新到最新版本,并在 VS 中右键单击 .net core project
以检查下拉列表中是否有 3.1:
有时您可能需要重新安装或修复 .net core 3.1.100 sdk。
2.For Build:You 可以在构建中的其他任务之前添加使用 .net core task。
指定此任务使用3.1.100
版本,后续任务(MSBuild任务)也将使用此版本。
注意:Use .net core task
下载并安装指定的.net core sdk 需要几分钟时间。所以更推荐在本地agent中手动配置sdk。希望对您有所帮助:)
我们使用了一个专用的 dotnet 池,只安装了 VS 2019 版本。它现在正在工作。看起来,如果我们在同一台代理计算机上安装 VS 2017 和 VS 2019,它会选择 VS 2017 构建工具,导致 VS 2019 构建失败。
我有一个 MSBuild 任务要在 TFS 2018 [本地] 上构建服务结构项目。该解决方案使用 Visual Studio 2019 和 MSBuild 在本地构建良好。它在 TFS 构建代理上失败并出现错误..
Error NETSDK1045: The current .NET SDK does not support targeting .NET Core 3.1. Either target .NET Core 2.1 or lower, or use a version of the .NET SDK that supports .NET Core 3.1.
我明确配置了 MSBuild 任务以使用 "C:\Program Files (x86)\Microsoft Visual Studio19\Professional\MSBuild\Current\Bin\msbuild.exe"
我正在使用具有以下参数的 MSBuild 任务..
/p:Deterministic=true /t:Package /p:PackageLocation=$(build.artifactstagingdirectory)\applicationpackage
TFS Build 代理安装了 Visual Studio 2017 和 2019。它还安装了 .Net 核心 SDK 3.1。 [3.1.100 版本].
出于某种原因,构建输出显示正在从 "C:\Program Files\dotnet\sdk.1.602" 中获取 SDK。 需要使用"C:\Program Files\dotnet\sdk.1.100"
的SDK如何强制 MSBuild 任务使用 C:\Program Files\dotnet\sdk.1.100.
中的 SDK我无法将 "Nuget tools installer" 任务添加到管道中,因为我们的构建代理无法访问互联网
注意:当我们使用 .net core 2.2 时,该项目在 TFS 中使用来自 Visual Studio 2017 构建任务的 MSBuild 构建良好。
我们不得不将一个项目升级到 .net core 3.1 和 VS 2019,它破坏了 TFS 中的构建。
SFProj 文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets=";ValidateMSBuildFiles">
<Import Project="..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" />
<PropertyGroup Label="Globals">
<ProjectGuid>3b02cfa3-a4c3-49ea-9186-64ae171d64a7</ProjectGuid>
<ProjectVersion>2.3</ProjectVersion>
<MinToolsVersion>1.5</MinToolsVersion>
<SupportedMSBuildNuGetPackageVersion>1.6.7</SupportedMSBuildNuGetPackageVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
</PropertyGroup>
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<ItemGroup>
<None Include="ApplicationParameters\Local.1Node.xml" />
<None Include="ApplicationParameters\Local.5Node.xml" />
<None Include="PublishProfiles\Local.1Node.xml" />
<None Include="PublishProfiles\Local.5Node.xml" />
<None Include="Scripts\Deploy-FabricApplication.ps1" />
</ItemGroup>
<ItemGroup>
<Content Include="ApplicationPackageRoot\ApplicationManifest.xml" />
<Content Include="ApplicationParameters\Params.xml" />
<Content Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Stateful1.csproj" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<PropertyGroup>
<ApplicationProjectTargetsPath>$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Service Fabric Tools\Microsoft.VisualStudio.Azure.Fabric.ApplicationProject.targets</ApplicationProjectTargetsPath>
</PropertyGroup>
<Import Project="$(ApplicationProjectTargetsPath)" Condition="Exists('$(ApplicationProjectTargetsPath)')" />
<Import Project="..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" />
<Target Name="ValidateMSBuildFiles" BeforeTargets="PrepareForBuild">
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props')" Text="Unable to find the '..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.props' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
<Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets')" Text="Unable to find the '..\..\packages\Microsoft.VisualStudio.Azure.Fabric.MSBuild.1.6.7\build\Microsoft.VisualStudio.Azure.Fabric.Application.targets' file. Please restore the 'Microsoft.VisualStudio.Azure.Fabric.MSBuild' Nuget package." />
</Target>
</Project>
The TFS Build agent has both Visual Studio 2017 and 2019 installed. It also has the .Net core SDK 3.1 installed. [3.1.100 version].
For some reason the build output shows that the SDK is being picked up from "C:\Program Files\dotnet\sdk.1.602". It needs to use the SDK from "C:\Program Files\dotnet\sdk.1.100"
定位问题原因:
在你的msbuild任务之前添加一个command-line task,让它执行dotnet --info
命令来输出你构建中使用的真实sdk版本。检查它是否使用 3.1.100 版本。
(正常情况下,dotnet --info
会输出可用的最新sdk版本)
可能的解决方法:
1.For代理本身:由于.net core SDK 3.1.100
支持VS2019 16.4及以上版本。因此尝试将 TFS 代理中的 VS2019 更新到最新版本,并在 VS 中右键单击 .net core project
以检查下拉列表中是否有 3.1:
有时您可能需要重新安装或修复 .net core 3.1.100 sdk。
2.For Build:You 可以在构建中的其他任务之前添加使用 .net core task。
指定此任务使用3.1.100
版本,后续任务(MSBuild任务)也将使用此版本。
注意:Use .net core task
下载并安装指定的.net core sdk 需要几分钟时间。所以更推荐在本地agent中手动配置sdk。希望对您有所帮助:)
我们使用了一个专用的 dotnet 池,只安装了 VS 2019 版本。它现在正在工作。看起来,如果我们在同一台代理计算机上安装 VS 2017 和 VS 2019,它会选择 VS 2017 构建工具,导致 VS 2019 构建失败。