【发布时间】:2019-05-09 06:29:46
【问题描述】:
我正在尝试使用命令 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(使用 Linux 的 Windows 子系统)和 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,版本=4.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a”。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。
但是,该解决方案可以在 VS2017(版本 15.9.7)中正常运行和构建。我已经尝试过搜索生成的二进制日志,但我无法理解它,并且似乎没有任何明显的错误(在 Ubuntu 和 Mac 上)。 Windows 错误消息是否有某种关联?
失败的项目以 netstandard 2.0 为目标(与构建的项目相同)。 dotnet --version 在所有 3 个环境中返回的版本都是 2.1.504。
任何帮助将不胜感激。
【问题讨论】:
-
嗨 jasonch,既然你可以在 vs2017 中很好地构建它,如果你打开 vs 的开发者命令提示符并使用
msbuild path/xxx.sln命令,结果会怎样? -
嗨 Lance,使用开发人员命令提示符,我能够使用
msbuild <solution.sln>成功构建它。dotnet build和msbuild有区别吗? -
是的,它们在某些方面是不同的。您应该知道的是 dotnet build 是轻量级的,并且在 .net 核心上运行,而 msbuild.exe 在完整框架上运行。请检查我的回答是否有帮助
标签: c# visual-studio xamarin.forms msbuild