【问题标题】:"dotnet build" command fails with error MSB6006: "csc.exe" exited with code 1“dotnet build”命令失败,错误 MSB6006:“csc.exe”退出,代码为 1
【发布时间】: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 buildmsbuild 有区别吗?
  • 是的,它们在某些方面是不同的。您应该知道的是 dotnet build 是轻量级的,并且在 .net 核心上运行,而 msbuild.exe 在完整框架上运行。请检查我的回答是否有帮助

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


【解决方案1】:

您需要使用 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 的回答。感谢他的详细描述!

【讨论】:

    猜你喜欢
    • 2019-02-04
    • 1970-01-01
    • 2021-09-10
    • 2017-03-02
    • 2018-07-12
    • 2015-10-12
    • 2020-05-27
    • 1970-01-01
    • 2021-07-27
    相关资源
    最近更新 更多