我有一个项目,我想使用.net core 2.0,我相信它是netcoreapp2.0。它还使用了.net 4.6.1创建的nuget包。我可以控制这个nuget包,如果需要可以改变它。它确实有netstandards 2.0作为nuget包导入。
如果我包含在我的cproj文件中:
<TargetFramework>netcoreapp2.0</TargetFramework>
我收到了这个警告:
使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETCoreApp,Version = v2.0'恢复包'Terryberry.Roes.Common 2017.9.29-mongo'。此软件包可能与您的项目不完全兼容。
以及有关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(&gt; = 2017.2.0) - &gt; Microsoft.VisualStudio.Web.BrowserLink(&gt; = 1.1.2) - &gt; Microsoft.Extensions.FileProviders.Physical(&gt; = 1.1.1) - &gt; NETStandard.Library(&gt; = 1.6.1) - &gt; System.Net.Sockets(&gt; = 4.3.0) MyNetCoreProject(&gt; = 2017.2.0) - &gt; Microsoft.VisualStudio.Web.BrowserLink(&gt; = 1.1.2) - &gt; System.Net.Sockets(&gt; = 4.1.0)MyNetCoreProject
我尝试了两种目标:
<TargetFrameworks>net461;netcoreapp2.0</TargetFrameworks>
这给了我一些警告:
使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETCoreApp,Version = v2.0'恢复包'My461NugetPackage'。此软件包可能与您的项目不完全兼容。
这也让我感到困惑,因为现在我添加了net461,它说要用.NetCoreApp构建它
关于降级System.Net.Sockets
仍然存在错误然后我决定我愿意尝试net461。只是为了看它是否会编译。确实如此,但我收到了运行时错误。
<TargetFramework>net461</TargetFramework>
这给了我:
未处理的异常:System.TypeLoadException:方法'Microsoft.AspNetCore.Hosting.WebHostBuilder'中的方法'ConfigureAppConfiguration'来自程序集'Microsoft.AspNetCore.Hosting,Version = 1.1.2.0,Culture = neutral,PublicKeyToken = adb9793829ddae60'不有一个实现。
我已经尝试过做一些研究,但是有很多旧的/过时的信息,因为.net核心正在发展。我无法弄清楚这一点。任何指导都将不胜感激。
答案 0 :(得分:2)
首先,你不能同时瞄准两者。他们互相排斥。但是,这不是问题,因为你不需要。
你得到的警告是设计的。它不会阻止您的应用程序工作或真正指出任何问题。就是这样:一个警告。它让你知道你的.NET Core项目正在使用一个面向.NET Framework 4.6.1的库,当可能导致问题时,当且仅当该库利用某些特定的框架功能时才会出现问题不受.NET Standard 2.0支持。它只是让你意识到正在发生的事情,只要所有应用程序的功能都正常工作,就可以安全地忽略它。如果警告本身困扰你,你可以简单地压制它。
此警告不仅在安装软件包时出现,而且每次构建时都会出现。这可以确保您不会意外地忽略它。
警告的原因是NuGet无法知道.NET Framework库是否真的有效。例如,它可能依赖于Windows窗体。为了确保您不会浪费时间来解决无法正常工作的问题,NuGet会让您知道您可能会脱轨。当然,你必须忽略的警告令人讨厌。因此,我们建议您测试应用程序/库,如果发现一切正常,则可以取消警告。
答案 1 :(得分:0)
不完全是您要求的,但实现这一目标的另一种方法是使用共享库。
它有点复杂,因为你有一个共享的库项目(只包含共享的代码文件)和多个其他以项目为目标的项目(例如一个用于.net 4.6.1,一个用于.net 2.0核心,等等)。该结构的一个优点是,您可以使用特定于平台的代码扩展项目。
例如,请参阅this repository。