Microsoft.CSharp.Core.targets缺失

问题描述 投票:3回答:4

我正在使用构建工具2017在TFS 2017 Update 3上构建Web服务项目。我收到以下错误

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Microsoft.CSharp.CurrentVersion.targets(322,5):错误MSB4019:导入的项目“C:\ Program Files(x86) )\找不到Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ Roslyn \ Microsoft.CSharp.Core.targets“。确认声明中的路径是否正确,以及该文件是否存在于磁盘上。

我需要采取哪些步骤来修复此错误?

c# tfs msbuild nuget visual-studio-2017-build-tools
4个回答
2
投票

根据这个GitHub issue,你需要设置$(RoslynTargetsPath)

如果在计算机上安装了MSBuild并且您的测试在Visual Studio Developer命令提示符下运行,那么您不需要执行任何操作。但是,MSBuild 15.0不再将自己置于注册表中,这使得MSBuild无法找到自己。这是因为Visual Studio授权您可以进行多个并行安装。在这种情况下,每个Visual Studio实例将安装一次MSBuild。 MSBuild现在通过查看VS命令提示符设置的环境变量来查找自己。

如果要通过我们的软件包和完成项目评估所需的所有其他软件包的组合来完全重新分发MSBuild,则必须在加载项目之前设置RoslynTargetsPath。您可能会认为这是NuGet的一个问题,因为所有包'<contentFiles />都会转到输出目录的根目录,而您无法为某些包指定子目录。


1
投票

首先建议您使用TFS构建服务帐户在构建代理上直接使用msbuild命令。如果问题与您的代理环境或TFS构建定义相关,这将缩小范围。

根据您的错误信息,路径C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.CSharp.Core.targets正在寻找Visual Studio 2017的路径。

但是,对于Build Tools,路径不同应该是C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn

似乎您还没有在构建代理上安装VS2017。这可能是问题的根本原因。

最简单的解决方案是在构建代理上安装VS2017。请注意,您需要重新配置构建代理或重新启动构建代理服务以捕获这些新功能。否则,您需要更改.csproj项目文件中的相应导入部分。


1
投票

我更新到TFS2018,问题解决了。


1
投票

在我的情况下,打开现有的解决方案文件(使用.sln扩展名),它安装了所有缺少的依赖项。

否则,请手动检查nuget.org上缺少的目标包并安装它们(例如MSBuild.Microsoft.VisualStudio.Web.targets)。

© www.soinside.com 2019 - 2024. All rights reserved.