gpt4 book ai didi

c# - 如何在同一个项目中针对netcoreapp2.0和net461

转载 作者:太空狗 更新时间:2023-10-29 23:36:24 24 4
gpt4 key购买 nike

我有一个项目,我想使用 .net core 2.0,我相信它是 netcoreapp2.0。它还使用 .net 4.6.1 创建的 nuget 包。我可以控制这个 nuget 包,如果需要的话可以在那里改变一些东西。它确实将 netstandards 2.0 作为 nuget 包导入。

如果我在我的 cproj 文件中包含:

    <TargetFramework>netcoreapp2.0</TargetFramework>

我收到这个警告:

包“Terryberry.Roes.Common 2017.9.29-mongo”已使用“.NETFramework,Version=v4.6.1”而不是项目目标框架“.NETCoreApp,Version=v2.0”恢复。此包可能与您的项目不完全兼容。

以及有关 system.net.sockets 从 4.3 降级到 4.1 的错误。 4.6.1 nuget 包有 System.Net.Sockets 4.3,所以我不确定它为什么要降级。

具体错误供引用:

检测到包降级:System.Net.Sockets 从 4.3.0 到 4.1.0。直接从项目中引用包以选择不同的版本。 MyNetCoreProject (>= 2017.2.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) -> Microsoft.Extensions.FileProviders.Physical (>= 1.1.1) -> NETStandard.Library (>= 1.6. 1) -> System.Net.Sockets (>= 4.3.0) MyNetCoreProject (>= 2017.2.0) -> Microsoft.VisualStudio.Web.BrowserLink (>= 1.1.2) -> System.Net.Sockets (>= 4.1.0) MyNetCoreProject

我尝试同时定位:

    <TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>

这给了我这样的警告:

包“My461NugetPackage”是使用“.NETFramework,Version=v4.6.1”而不是项目目标框架“.NETCoreApp,Version=v2.0”恢复的。此包可能与您的项目不完全兼容。

这也让我感到困惑,因为现在我添加了 net461,它说它将使用 .NetCoreApp 构建它

降级System.Net.Sockets还是有错误

然后我决定只尝试 net461。只是为了看看它是否会编译。确实如此,但我收到运行时错误。

    <TargetFramework>net461</TargetFramework>

这给了我:

未处理的异常:System.TypeLoadException:程序集“Microsoft.AspNetCore.Hosting.WebHostBuilder”中类型“Microsoft.AspNetCore.Hosting.WebHostBuilder”中的方法“ConfigureAppConfiguration”,Version=1.1.2.0,Culture=neutral,PublicKeyToken=adb9793829ddae60'有实现。

我已经尝试做一些研究,但是随着 .net core 的发展,那里有很多旧的/过时的信息。我一直无法弄清楚这一点。任何指导将不胜感激。

最佳答案

首先,您不能同时定位两者。它们是相互排斥的。不过,这不是问题,因为您不需要。

您收到的警告是设计使然。它不会阻止您的应用程序运行或真正指示任何问题。只是:一个警告。它让您知道您的 .NET Core 项目正在使用一个以 .NET Framework 4.6.1 为目标的库,当且仅当该库使用了恰好.NET Standard 2.0 不支持。它的存在只是为了让您了解正在发生的事情,并且只要您的应用程序的所有功能都正常工作就可以安全地忽略它。如果警告本身让您感到困扰,您可以简单地抑制它。

This warning not only appears when installing the package, but every time you build. This ensures you don’t accidentally overlook it.

The reason for the warning is that NuGet has no way of knowing whether the .NET Framework library will actually work. For example, it might depend on Windows Forms. To make sure you don’t waste your time troubleshooting something that cannot work, NuGet lets you know that you’re potentially going off the rails. Of course, warnings you have to overlook are annoying. Thus, we recommend that you test your application/library and if you find everything is working as expected, you can suppress the warning.

Source: Announcing .NET Standard 2.0

关于c# - 如何在同一个项目中针对netcoreapp2.0和net461,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46531784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com