Where is the difference of dotnet build on cmd vs

2020-04-14 09:22发布

Background

A simple dotnet core 2.0 project has a dependency to Xamarin.Forms (2.3.4.270).

enter image description here

When I build the project in Visual Studio 2017 (15.3) then the build succeeds. When running dotnet build on the command line it fails with the following error:

C:\Users\steph.nuget\packages\xamarin.forms\2.3.4.270\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.targets(40,3): error MSB4062: The "Xamarin.Forms.Build.Tasks.FixedCreateCSharpManifestResourceName" task could not be loaded from the assembly C:\Users\steph.nuget\packages\xamarin.forms\2.3.4.270\build\portable-win+net45+wp80+win81+wpa81+MonoAndroid10+Xamarin.iOS10+xamarinmac20\Xamarin.Forms.Build.Tasks.dll. Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Confirm that the declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [C:\Users\steph\Documents\Bitbucket\time-stamp-core\TimeStamp.Core.Views\TimeStamp.Core.Views.csproj]

So for whatever reason Microsoft.Build.Utilities.v4.0 is missing. As you can see in the screenshot above I already tried to add the build utilities as well, without success. Independent on whether Build Core is added or not I'm getting the same result.

.csproj file:

<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>

Questions

  1. Where is the difference betweend dotnet build and Visual Studio 2017 for building such kind of project? I've been under the impression that VS2017 also just calls dotnet build.
  2. How can I fix this?

1条回答
成全新的幸福
2楼-- · 2020-04-14 10:01

This version of the Xamarin.Forms forms contains a build task that cannot be loaded on the .NET Core version of MSBuild, which is why you need to use the full framework version of MSBuild (included in VS).

There is some discussion about this package on this GitHub issue.

If a package containing MSBuild tasks is not specifically authored to support both .NET Core and .NET Framework MSBuild, these errors are likely to occur.

查看更多
登录 后发表回答