【发布时间】:2017-10-02 18:47:20
【问题描述】:
我有一个项目,我想使用 .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 (>= 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>
这给了我这样的警告:
使用“.NETFramework,Version=v4.6.1”而不是项目目标框架“.NETCoreApp,Version=v2.0”恢复包“My461NugetPackage”。此软件包可能与您的项目不完全兼容。
这也让我感到困惑,因为现在我添加了 net461,它说它将使用 .NetCoreApp 构建它
降级 System.Net.Sockets 仍有错误
然后我决定只尝试 net461。只是看看它是否会编译。确实如此,但我得到一个运行时错误。
<TargetFramework>net461</TargetFramework>
这给了我:
未处理的异常:System.TypeLoadException:来自程序集“Microsoft.AspNetCore.Hosting,版本=1.1.2.0,文化=中性,PublicKeyToken=adb9793829ddae60”的“Microsoft.AspNetCore.Hosting.WebHostBuilder”类型中的方法“ConfigureAppConfiguration”不有一个实现。
我已经尝试进行一些研究,但是随着 .net 核心的发展,那里有很多旧的/过时的信息。我一直无法弄清楚这一点。任何指导将不胜感激。
【问题讨论】:
-
是否有任何原因阻止您将类库交叉编译到
net461和netstandard2.0? -
@Tseng 是什么意思?我还不能将 4.6.1 应用程序升级到 .net 核心,这是一个大项目。我肯定会考虑使用 net461 和 netstandard2.0。我只是在 TargetFrameworks 标签中设置这两个吗?
-
你说:它也是使用.net 4.6.1创建的nuget包,所以问题是,为什么你不能移植/交叉定位它使用 netstandard 2.0,所以我不是在谈论您的应用程序,而是在谈论您引用的库/包。然后您可以在 net461 和 netcoreapp2.0 中引用它,而不会出现任何问题
-
也许这就是我最终要研究的东西。它有很多东西,将它移植到 netstandard 2.0 可能有它自己的一系列问题。不过,我很感谢您的建议!
标签: c# .net asp.net-core