cmd与VS2017的dotnet构建的区别在哪里?

时间:2017-09-09 07:36:11

标签: xamarin.forms .net-core visual-studio-2017

背景

一个简单的dotnet核心2.0项目依赖于Xamarin.Forms(2.3.4.270)。

enter image description here

当我在Visual Studio 2017(15.3)中构建项目时,构建成功。在命令行上运行dotnet build时,它失败并显示以下错误:

  

C:\用户\ steph.nuget \包\ xamarin.forms \ 2.3.4.270 \构建\便携式双赢+ net45 + WP80 + win81 + wpa81 + MonoAndroid10 + Xamarin.iOS10 + xamarinmac20 \ Xamarin.Forms.targets( 40.3):       错误MSB4062:“Xamarin.Forms.Build.Tasks.FixedCreateCSharpManifestResourceName”任务   无法从程序集中加载   C:\ Users \用户steph.nuget \包\ xamarin.forms \ 2.3.4.270 \建立\便携式双赢+ net45 + WP80 + win81 + wpa81 + MonoAndroid10 + Xamarin.iOS10 + xamarinmac20 \ Xamarin.Forms.Build.Tasks.dll 。   无法加载文件或程序集'Microsoft.Build.Utilities.v4.0,   Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'。   该系统找不到指定的文件。确认一下    声明是正确的,即汇编及其所有   依赖项可用,并且该任务包含公共类   实现Microsoft.Build.Framework.ITask。   [C:\用户\斯蒂芬\文件\到位桶\时间戳核\ TimeStamp.Core.Views \ TimeStamp.Core.Views.csproj]

因此无论出于何种原因Microsoft.Build.Utilities.v4.0都缺失了。正如您在上面的屏幕截图中看到的,我已经尝试添加构建实用程序,但没有成功。无论是否添加Build Core,我都会得到相同的结果。

.csproj档案:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Build.Utilities.Core" Version="15.3.409" />
    <PackageReference Include="Xamarin.Forms" Version="2.3.4.270" />
  </ItemGroup>

</Project>

问题

  1. 构建此类项目的dotnet build和Visual Studio 2017之间的区别在哪里?我一直认为VS2017也只是打电话给dotnet build
  2. 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

此版本的Xamarin.Forms表单包含无法在.NET Core版本的MSBuild上加载的构建任务,这就是您需要使用MSBuild的完整框架版本(包含在VS中)的原因。

this GitHub issue上讨论了这个包。

如果没有专门创建包含MSBuild任务的程序包以支持.NET Core和.NET Framework MSBuild,则可能会发生这些错误。