flu*_*ter 54 .net c# nuget .net-core
我正在使用带有C#的.NETCore,当我这样做时,dotnet restore
它给出了以下错误:
PS C:\ workspace\Arbitrator> dotnet restore
C:\ workspace\Arbitrator\Arbitrator.csproj:警告NU1701:使用'.NETFramework,Version = v4.6.1'恢复包'PusherClient 0.5.0'而不是项目目标框架'.NETCoreApp,Version = v2.0'.这可能会导致兼容性问题.C:\ workspace\Arbitrator\Arbitrator.csproj:警告NU1701:程序包'WebSocket4Net 0.14.1'使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETCoreApp,Version = v2.0'进行了恢复.这可能会导致兼容性问题.
问题中的这个包是PusherClient,我只是按照块文件导入它,我该如何修复这个警告?
Sou*_*rer 65
您不一定要等到PusherClient升级为.NET Core.
从.NET Core引用.NET Framework 4.6.1(及以下版本)是自.NET Core/Standard 2.0预览2/VS 2017预览版15.3以来的新功能,根据MS,它可以被视为可以帮助您迁移的功能随着时间的推移.NET Framework代码到.NET Standard或.NET Core.
你可以压制这个警告
<PackageReference Include="Contoso.Base.API" Version="1.0.3">
<NoWarn>NU1701</NoWarn>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)
<NoWarn>NU1701</NoWarn>
Run Code Online (Sandbox Code Playgroud)
有关从GUI执行此操作的方法,请参阅NuGet wiki中的方案2和3.
但是,当您调用.NET Core不支持的API(如WPF中的某些内容)时,您的应用程序可能会在运行时失败.失败的另一个原因可能是PusherClient可能使用的本机API .所以你应该广泛测试它.但在大多数情况下,它只适用于支持.NET Core的所有平台(例如,我已经使用MathNet.Numerics依赖测试了一个应用程序, 它在Linux上工作,即使 MathNet.Numerics也是.NET Framework 4.6.1) .
如果您不需要将应用程序设置为跨平台,只需将以下内容添加到csproj文件中,即可将其目标框架更改为.NET 4.6.1:
<TargetFramework>net461</TargetFramework>
Run Code Online (Sandbox Code Playgroud)Chr*_* M. 15
附带说明,不要这样做:
<PropertyGroup>
<NoWarn>NU1701</NoWarn>
<PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
这样做将破坏其他任何从其他地方获取的NoWarn设置,例如从directory.build.prop文件中获取。而是这样做:
<PropertyGroup>
<NoWarn>$(NoWarn);NU1701</NoWarn>
<PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
这样,将保留所有全局设置。
正如 Yair 指出的,GitHub 上有一个围绕此主题的开放问题:github.com/NuGet/Home/issues/5740。
如果使用后备框架版本解决的依赖关系是可传递的,则抑制引用包的警告将不起作用。
例如,Microsoft.TeamFoundationServer.ExtendedClient 依赖于与 .NET Core 3.0 不兼容的 Microsoft.AspNet.WebApi.Core,从而导致出现警告。将 NoWarn 添加到 Microsoft.TeamFoundationServer.ExtendedClient 将不起作用。
作为解决方法(您可以在此处查看我的帖子:GitHub 问题上的解决方法),您可以直接引用传递依赖项并针对该包使用 NoWarn。
<ItemGroup>
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.3" NoWarn="NU1701" />
<PackageReference Include="Microsoft.TeamFoundationServer.ExtendedClient" Version="16.153.0"/>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
23725 次 |
最近记录: |