dnxcore50可以引用针对.net4.5编译的nuget包吗
Posted
技术标签:
【中文标题】dnxcore50可以引用针对.net4.5编译的nuget包吗【英文标题】:can nuget packages compiled against .net4.5 be referenced by dnxcore50 【发布时间】:2015-10-12 13:32:25 【问题描述】:我正在编译一个仅针对 dnxcore50 的应用程序。
我正在尝试引用一个我知道在针对 dnx451 运行时可以正常工作的 nuget 包。当我做dnx . run
时,我得到:
System.InvalidOperationException:无法解析目标框架“DNXCore,Version=v5.0”的以下依赖项:
它还建议dnu restore
,但包在那里
它显然不适用于这个包,所以在什么情况下它会(如果有的话)? 为了让它工作,包管理器必须构建一个针对 dnxcore50 编译的版本吗?
更新
这张图表让事情变得更清楚了(复制自here)
【问题讨论】:
"dnxcore50是否可以引用针对.net4.5编译的nuget包" 没有。 @vcsjones 有没有办法查明是否有问题的包是针对 dnxcore50 编译的,或者是否有已编译的包列表(因此可以引用)?这里的问题是您可以在 project.json 中添加 ref 并且错误消息并不是那么清楚:即使它确实列出了有问题的 dll,也没有提及下游导致问题的原因。在某些情况下,您可能会冒险猜测,但“框架不匹配”错误可能会比“没有真正缺少程序集”错误更有帮助 dnxcore50 正在进行中,需要一段时间才能支持 Linux/OSX 目标上的所有框架程序集。 dnx451 存在的基本原因,它依赖于您机器上安装的 .NET Framework。 【参考方案1】:没有。 dnxcore50
表示您在 .NET Core 之上的 DNX 上运行。您可以在 .NET Core 中加载的唯一程序集是那些以兼容配置文件为目标的程序集,在这种情况下,例如dnxcore50
、dotnet
或兼容的便携式配置文件之一。
如果您有一个针对完整 .NET Framework 编译的程序集(通过 net45
、net451
等),则它在 .NET Core 上将无法运行,因为相同的 API 不可用。
【讨论】:
一目了然(即无需下载)是否可以知道一个nuget包是否支持dnxcore50? (或框架 x)例如 nuget.org/packages/log4net 没有。必须下载软件包才能看到该信息。您可以使用 NuGet 包资源管理器直接从提要中快速打开包,以使其更轻松。以上是关于dnxcore50可以引用针对.net4.5编译的nuget包吗的主要内容,如果未能解决你的问题,请参考以下文章