“ dotnet build”命令失败,错误为MSB6006:“ csc.exe”退出,代码为1

时间:2019-05-09 06:29:47

标签: c# visual-studio xamarin.forms msbuild

我正在尝试使用命令dotnet build <solution.sln>作为构建脚本的一部分从命令行构建Xamarin Forms解决方案。解决方案中的大多数项目都在构建;但是,两个项目失败,并显示以下错误消息:error MSB6006: "csc.exe" exited with code 1.(在Ubuntu上)和error MSB6006: "csc.exe" exited with code 8.(在Mac上)。

我已经在单独的计算机上运行Ubuntu 18.04(使用Windows子系统用于Linux)和MacOS 10.13.6。

我还尝试从Windows命令行运行dotnet build <solution.sln>,该命令行打印出此错误消息:

  

错误MSB4062:无法从程序集C:\ Users \ Jason.nuget \ packages \ livexaml \ 2.1.22 \ build \ XamarinLive.Build.dll中加载“ XamarinLive.Build.XamarinLiveTask”任务。无法加载文件或程序集'Microsoft.Build.Utilities.v4.0,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。该系统找不到指定的文件。确认声明正确无误,并保证程序集及其所有依赖项都可用,并且任务包含实现Microsoft.Build.Framework.ITask的公共类。

但是,该解决方案在VS2017(版本15.9.7)中可以正常运行和构建。我试过搜索生成的二进制日志,但是我感觉不多,并且似乎也没有任何明显的错误(在Ubuntu和Mac上)。 Windows错误消息可能以某种方式关联吗?

失败的项目面向netstandard 2.0(与构建的项目相同)。 dotnet --version在所有3种环境中返回的版本均为2.1.504

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

您需要使用msbuild.exe而不是dotnet build   对于这种情况。

msbuild.exe在完整框架上运行,而dotnet build在.NET Core上运行,并且大多数构建任务都不支持。

在VS中构建它们时,实际上会调用msbuild.exe来构建解决方案。因此,由于它也调用msbuild.exe,因此可以通过开发人员命令提示符很好地构建它。

对于vs2017,您可以在C:\Program Files (x86)\Microsoft Visual Studio\2017\Edition\MSBuild\15.0\Bin中找到它。

更多详细信息,请参见此similar issue中Martin的回答。感谢他的详细说明!