Microsoft.CSharp.Core.targets丢失。

13
我正在使用 TFS2017 Update 3 和 Build Tools 2017 构建 WebService 项目。但是,我遇到以下错误:

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 Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\Microsoft.CSharp.Core.targets”。请确认声明中的路径是否正确,并且该文件在磁盘上存在。

要解决此问题,您需要采取以下步骤:

你能在“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn”文件夹中看到“Microsoft.CSharp.Core.targets”文件吗? - Eddie Chen - MSFT
5个回答

5

2

如果你从谷歌/鸭鸭哥进入这个页面,试图找出为什么在Ubuntu 20.04中会收到类似的消息,也许这可以帮助:https://askubuntu.com/a/1231973/1073658(简而言之,从mono-project的仓库中安装apt install mono-roslyn


2
根据这个GitHub问题,您需要设置$(RoslynTargetsPath)
如果在计算机上安装了MSBuild并且您的测试在Visual Studio开发人员命令提示符中运行,则不需要进行任何操作。然而,MSBuild 15.0不再将自己放置在注册表中,这使得MSBuild无法找到自己。这是由于Visual Studio的规定,您可以拥有多个并排安装。在这种情况下,每个Visual Studio实例都会安装一次MSBuild。现在,MSBuild通过查看由VS命令提示符设置的环境变量来找到自己。
如果您想通过我们的软件包和所有其他软件包的组合来完全重新分发MSBuild,并完成所有项目评估所需的操作,则必须在加载项目之前设置RoslynTargetsPath。您可以认为这是NuGet的问题,因为所有软件包的<contentFiles />都会转到输出目录的根目录,您无法为某些软件包指定子目录。

14
可以谈一下如何设置 $(RoslynTargetsPath) 么?尤其是在 Mac 上怎么做?请用通俗易懂的语言进行翻译,并确保不改变原意。 - Chandler

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的路径。

然而,对于构建工具,路径是不同的,应该是C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn

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

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


2
嗨@PatrickLu-MSFT,我在构建服务器上安装了VS2017并重新配置了代理。但是在构建时,我仍然会收到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”。请确认<Import>声明中的路径是否正确,并且磁盘上存在该文件。 - doorman
而且项目文件具有以下导入语句<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />。 - doorman
@doorman,你能否检查一下构建代理上的相应路径?看看是否存在这个文件?如果不存在,尝试手动将文件复制到该路径,并重新构建以查看是否解决了问题。此外,您还可以在构建日志中设置system.bug=true变量以获取更详细的故障排除日志。 - PatrickLu-MSFT

-1

我升级到TFS2018,问题得到解决。


这对于其他遇到同样问题的人并没有什么帮助。也许可以多描述一下“问题是如何解决的”? - adamt8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接