当前位置: 首页 > 编程语言 > C#

如何在同一个项目中针对netcoreapp2.0和net461分享

时间:2023-04-10 23:06:27 C#

如何在同一个项目中针对netcoreapp2.0和net461.0。它还使用.net4.6.1创建的nuget包。我可以控制这个nuget包,如果需要可以更改它。它确实将netstandards2.0作为nuget包导入。如果我在我的cproj文件中包含:netcoreapp2.0,我会收到此警告:Package'Terryberry.Roes.Common2017.9.29-mongo'uses'.NETFramework,Version=v4.6.1'insteadofprojecttargetframework'。NETCoreApp,Version=v2.0'已恢复。此包可能与您的项目不完全兼容。以及有关system.net.sockets从4.3降级到4.1的错误。4.6.1nuget包有System.Net.Sockets4.3,所以我不确定为什么要降级。确切错误供参考:Detectedpackagedowngrade:System.Net.Socketsupgradedfrom4.3.0to4.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我尝试了两个目标:net461;netcoreapp2.0,它给了我一些警告:Using'.NETFramework,Version=v4.6.1'insteadofprojecttargetframework'.NETCoreApp,Version=v2.0'Restorepackage'我的461Nuget包'。此包可能与您的项目不完全兼容。这也让我感到困惑,因为现在我添加了net461并且它说要使用.NetCoreApp降级System.Net.Sockets构建它仍然给我错误然后我决定我愿意尝试net461。只是为了看看它是否会编译。它确实如此,但我收到运行时错误。net461这给了我:未处理的异常:System.TypeLoadException:程序集'Microsoft.AspNetCore.Hosting.WebHostBuilder'中的方法'Microsoft.AspNetCore.Hosting.WebHostBuilder'中的方法'Microsoft.AspNetCore.Hosting,Version=1.1.2.0,Culture=neutral,PublicKeyToken=adb9793829ddae60'未实施。我试过做一些研究,但随着.net核心的发展,有很多旧的/过时的信息。我想不通。任何指导将不胜感激。首先,您不能同时针对两者。它们是相互排斥的。但是,这不是问题,因为您不需要这样做。您收到的警告是设计使然。它不会阻止您的应用程序工作或真正指出任何问题。就是这样:一个警告。它告诉您您的.NETCore项目正在使用一个以.NETFramework4.6.1为目标的库,当且仅当该库使用.NETStandard不支持的某些特定框架功能时才会出现问题2。0.它只是让你知道发生了什么,只要所有应用程序功能正常,就可以安全地忽略它。如果警告本身困扰您,您可以简单地抑制它。这个警告不仅在安装包时出现,而且在我每次构建它时都会出现。这确保您不会意外地忽略它。出现警告的原因是NuGet无法知道.NETFramework库是否实际有效。例如,它可能依赖于Windows窗体。为确保您不会浪费时间尝试修复无法正常工作的内容,NuGet让您知道您可能会偏离轨道。当然,您必须忽略的警告很烦人。因此,我们建议您测试您的应用程序/库,如果您发现一切正常,您可以抑制警告。资料来源:宣布.NETStandard2.0并不是您所要求的,但实现这一目标的另一种方法是使用共享库。它有点复杂,因为您有一个共享库项目(仅包含共享代码文件)和多个其他特定于平台的项目(例如,一个用于.net4.6.1,一个用于.net2.0核心,等等)。这种结构的一个优点是您可以使用特定于平台的代码扩展项目。例如,请参阅此存储库。以上就是C#学习教程:如何在同一个项目中定位netcoreapp2.0和net461共享的所有内容。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: