San*_*osh 4 mvvmcross xamarin .net-standard-2.0
我正在使用最新版本的MvvmCross创建一个Android和iOS应用程序.现在,由于不推荐使用可移植类库,我使用的是.NET标准库2.0版.
我在MvvmCross的NuGet包中有这个警告.....虽然项目编译但是我不确定我是否需要担心它,因为最后一行说
此软件包可能与您的项目不完全兼容.
以下是确切的警告
警告NU1701:使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETStandard,Version = v2.0'恢复了包'MvvmCross.Core 5.7.0'.此软件包可能与您的项目不完全兼容.
类似的警告 MvvmCross.Platform 5.7.0
[
由于J.Dhaik已经提到过MvvmCross版本5.7.0尚未更新以支持.NET Standard.下一个主要版本6.0.0将添加对.NET Standard 2.0的支持.
但是,可以在.NET Standard类库中使用6.0.0之前的MvvmCross版本.
那警告为什么呢?
您可以查看我在此Stack Overflow问题上给出的解释,了解为什么您会看到警告.提取下面
使用.NET Standard 2.0和.NET Core SDK 2+中的更新工具,.NET团队希望更容易更新或使用.NET标准库.问题是并非所有NuGet包都已更新以支持.NET Standard版本.因此,他们引入了针对.NET Framework 4.6.1的回退,它几乎100%符合.NET标准(.NET Standard 2.0规范中有一些API不在.NET Framework 4.6.1中,但它们可以是如果需要,通过NuGet包带入).因此,您看到的警告是通知您这些软件包不符合您所针对的.NET标准版本,因此可能包含使用.NET Standard 2.0库在运行时中无法执行的API.
如何压制警告
NuGet提供两个选项,每个包或项目级别.
每包
您可以编辑csproj并将NoWarn="NU1701"
标记添加到包引用或选择NuGet包引用的属性(解决方案资源管理器>依赖关系> NuGet> {包名称}右键单击属性)并添加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>
Run Code Online (Sandbox Code Playgroud)
请注意,使用每个包方法依赖包警告不会通过抑制父包来抑制.因此,您需要将包作为依赖项引入以抑制警告.
项目级别
NuGet还为您提供了NU1701
在项目级别禁止所有警告的选项.您可以通过手动编辑csproj来执行此操作,如下所示
<PropertyGroup>
<NoWarn>NU1701</NoWarn>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
或者通过GUI可以修改Suppress warnings
为包含NU1701
注意,当完成清理和重建时,构建警告将消失,您仍可以在NuGet包引用上看到黄色警告图标.这可能需要重新加载项目才能清除.这可以通过卸载和重新加载项目来实现.
归档时间: |
|
查看次数: |
925 次 |
最近记录: |