Xamarin MvvmCross.Core/Platform 5.7.0';已使用';还原;。NETFramework,版本=v4.6.1';而不是项目目标框架';。NETStandard,Version=v2.0';

Xamarin MvvmCross.Core/Platform 5.7.0';已使用';还原;。NETFramework,版本=v4.6.1';而不是项目目标框架';。NETStandard,Version=v2.0';,xamarin,mvvmcross,.net-standard-2.0,Xamarin,Mvvmcross,.net Standard 2.0,我正在使用最新版本MvvmCross创建一个Android和iOS应用程序。现在,由于不推荐使用可移植类库,我使用的是.NET标准库版本2.0 我在MvvmCross的NuGet包中有这个警告……虽然项目已经编译,但我不确定是否需要像最后一行所说的那样担心它 此软件包可能与您的项目不完全兼容 下面是确切的警告 警告NU1701:已使用还原包“MvvmCross.Core 5.7.0” “.NETFramework,Version=v4.6.1”,而不是项目目标框架 “.NETStandard,版

我正在使用最新版本MvvmCross创建一个Android和iOS应用程序。现在,由于不推荐使用可移植类库,我使用的是.NET标准库版本2.0

我在MvvmCross的NuGet包中有这个警告……虽然项目已经编译,但我不确定是否需要像最后一行所说的那样担心它

此软件包可能与您的项目不完全兼容

下面是确切的警告

警告NU1701:已使用还原包“MvvmCross.Core 5.7.0” “.NETFramework,Version=v4.6.1”,而不是项目目标框架 “.NETStandard,版本=v2.0”。此软件包可能不完全兼容 与你的项目

MvvmCross.Platform 5.7.0的类似警告


[

此错误消息很简单,它意味着MvvmCross尚未更新为net.standard

在Net.Standard被广泛采用之前,这将是掘金的一个常见错误。但是在这种情况下有一个解决方案

使用.NET标准2时,您不需要指定包目标回退。在.NET标准2中,PackageTargetFallback标志已被弃用,而默认为net461(.NET Framework 4.6.1)或更高版本。但是,如果这不适合您的用例,您可以使用AssetTargetFallback覆盖此行为。
$(AssetTargetFallback);portable-net45+win8+wp8+wpa81;
如前所述,MvvmCross版本5.7.0尚未更新以支持.NET标准。下一个主要版本6.0.0将添加对.NET标准2.0的支持

但是,在.NET标准类库中使用6.0.0之前的MvvmCross版本是可能的

为什么要发出警告?

你可以看看我对这个问题的解释,为什么你会看到这个警告。摘录如下

使用.NET标准2.0和.NET核心SDK 2+中的更新工具 .NET团队希望使更新或使用.NET变得更容易 标准库。问题是并不是所有的NuGet包都 更新以支持.NET标准版本。因此,他们引入了 针对几乎100%兼容的.NET Framework 4.6.1的回退 使用.NET标准(在.NET标准中有一些API 不在.NET Framework 4.6.1中的2.0规范,但如果需要,可以通过NuGet软件包引入)。因此,您看到的警告是 通知您包不符合.NET标准版本 您是目标用户,因此可能包含不属于目标用户的API 使用.NET标准2.0在运行时执行 图书馆

如何抑制警告

NuGet提供了两个选项,每个包项目级

每件包装

您可以编辑csproj并将
NoWarn=“NU1701”
标记添加到包引用中,或选择NuGet包引用的属性(解决方案资源管理器>依赖项>NuGet>{The package name}右键单击属性),然后将
NU1701
添加到
NoWarn
属性中

结果将与csproj中的以下内容类似

<ItemGroup>
  <PackageReference Include="MvvmCross" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Core" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Binding" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Platform" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.CodeAnalysis" Version="5.7.0" NoWarn="NU1701" />
</ItemGroup> 
或者通过GUI,您可以修改
抑制警告
以包括
NU1701


什么是“此警告”?标题行中的警告(不应该是!)不包含您引用的最后一行是的,由于标题上的字符限制,我无法添加最后一行。但是,是的,警告也包含最后一行。警告NU1701:包“MvvmCross.Core 5.7.0”是使用“.NETFramework,版本=v4.6.1”而不是项目目标框架“.NETStandard,版本=v2.0”还原的。此包可能与您的项目不完全兼容。"MvvmCross.Platform 5.7.0也有类似的警告。那么,为什么不共享问题中的完整错误消息?请尝试一下,并使用更好的标题对您的问题进行简短解释。感谢您编辑了描述以包含确切的警告,警告仍然存在……我确实尝试将其添加到.Net Stan的属性组中通过编辑csproj文件进行dard项目,但没有成功。感谢您的详细解释谢谢,在我的情况下,警告没有被抑制,直到我将NU1701标记到屏幕截图上下一层的“抑制警告”中。谢谢,但这是不正确的!不要使用“警告为错误”,而是将“NU1701”放在“抑制警告”:字段或在*.csproj(与调试/发布配置相关的属性组下)中添加
NU1701
。我还可以确认黄色警告图标立即消失,无需清理或重新加载项目。感谢@MikeKeskinov您的100%正确,我已更新了答案。
<ItemGroup>
  <PackageReference Include="MvvmCross" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Core" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Binding" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.Platform" Version="5.7.0" NoWarn="NU1701" />
  <PackageReference Include="MvvmCross.CodeAnalysis" Version="5.7.0" NoWarn="NU1701" />
</ItemGroup> 
<PropertyGroup>
  <NoWarn>NU1701</NoWarn>
</PropertyGroup>