背景
一个简单的dotnet核心2.0项目依赖于Xamarin.Forms(2.3.4.270)。
当我在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>
问题
dotnet build
和Visual Studio 2017之间的区别在哪里?我一直认为VS2017也只是打电话给dotnet build
。答案 0 :(得分:1)
此版本的Xamarin.Forms表单包含无法在.NET Core版本的MSBuild上加载的构建任务,这就是您需要使用MSBuild的完整框架版本(包含在VS中)的原因。
在this GitHub issue上讨论了这个包。
如果没有专门创建包含MSBuild任务的程序包以支持.NET Core和.NET Framework MSBuild,则可能会发生这些错误。