我正在尝试使用命令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
。
任何帮助将不胜感激。
答案 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的回答。感谢他的详细说明!