能否引用针对.NET 4.5编译的NuGet包以供DNXCORE50使用?

3

我正在编译一个仅针对dnxcore50的应用程序。

我试图引用一个NuGet包,我知道它可以在dnx451上运行得很好。 当我执行dnx . run时,我收到以下错误信息:

System.InvalidOperationException:在目标框架'DNXCore,Version = v5.0'中解决以下依赖关系失败:

它还建议使用dnu restore,但包已经存在

显然该软件包不适用于此软件包,那么在何种情况下它会适用(如果有)?
为了使其正常工作,软件包管理器必须构建针对dnxcore50编译的版本吗?

更新

这张图表(来自这里)使事情变得更加清晰。

enter image description here


不能。NuGet包编译为.NET 4.5无法被DNXCore50引用。 - vcsjones
@vcsjones 有没有办法找出所讨论的包是否已编译为dnxcore50,或者是否有已编译的包列表(因此可以引用)?问题在于,您可以在project.json中添加ref,但错误消息并不是非常清楚:即使它确实列出了有问题的dll,也没有提到是什么下游导致了该问题。在某些情况下,您可以猜测“框架不匹配”错误可能比“实际上缺少程序集”错误更有帮助 - wal
dnxcore50是正在进行中的工作,需要一段时间才能支持Linux/OSX目标上的所有框架程序集。dnx451存在的基本原因是它依赖于您计算机上安装的.NET Framework。 - Hans Passant
1个回答

6

编号dnxcore50表示您正在使用基于.NET Core的DNX。在.NET Core中,您只能加载目标兼容配置文件的程序集,例如dnxcore50dotnet或兼容便携式配置文件之一。

如果您有一个针对完整.NET Framework(通过net45net451等)编译的程序集,则在.NET Core上运行时,由于相同的API不可用,该程序集将无法运行。


一眼之間(即無需下載),是否可以知道NuGet包是否支持DNXCore50?(或其他框架)例如https://www.nuget.org/packages/log4net/ - wal
1
不,要查看该信息必须先下载该软件包。不过,你可以使用NuGet Package Explorer直接从源中快速打开软件包,以便更加方便地查看。 - Damian Edwards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接