【问题标题】:How To Reference a .NET Core 1.1 DLL - Not Project - From .NET 4.6.1如何引用.NET Core 1.1 DLL - 不是项目 - 来自.NET 4.6.1
【发布时间】:2017-07-26 11:42:25
【问题描述】:

我发现了很多关于从 4.6.1 引用 .NET Core project 的帖子,但我收到一个错误,只是直接引用 .NET Core 1.1 DLL来自 4.6.1 Winforms 应用程序。奇怪的是,它编译得很好,但是得到了这个运行时错误:

“无法加载文件或程序集 'System.Runtime, Version=4.1.0.0....”

4.6.1 应用程序运行良好,直到它到达使用引用程序集的类,然后引发此错误(甚至不运行该类的构造函数)。

我的主要要求是 .NET Core DLL 需要跨平台 - 它需要在 Ubuntu 中运行。

整个核心DLL的project.json:

{ "版本": "1.0.0-*",

“依赖”:{ “Microsoft.NETCore.App”:{ “类型”:“平台”, “版本”:“1.1.0” },

“框架”:{ “netcoreapp1.1”:{ } } }

我不确定为什么会发生这种情况 - 核心 DLL 没有引用核心以外的任何东西 - 为什么它会让我的 4.6.1 应用开始寻找 System.Runtime?那是一个框架组件。如果是关于Core DLL的配置,那为什么不是编译时错误呢?

非常感谢任何帮助。

  • 嗡嗡声

【问题讨论】:

  • .NET 核心?不可能。 .NET 标准,是的。请先了解差异,然后再继续。

标签: cross-platform .net-core


【解决方案1】:

如果您希望某个库能够在使用 .NET Core 的 Ubuntu 上同时在 .NET Framework 4.6.1 中运行,那么该库应该以 netstandard1.4 或更低版本为目标。请参阅.NET Standard documentation 了解更多信息。

.NET Standard 是新的“可移植类库”,它允许您的库在 .NET Framework、.NET Core、Mono、UWP 等所有可以执行 .NET 代码的地方运行。

【讨论】:

  • 谢谢埃里克。你说“1.4或更低......”。我认为这是 Linux .NET Core 支持的最新版本,对吗?我应该去哪里跟上受支持的 Linux 版本?
  • 我说“netstandard1.4 或更低版本”是因为您想以 .NET Framework 4.6.1 为目标。请参阅此网页上的图表:docs.microsoft.com/en-us/dotnet/articles/standard/library,它表明 .NET Framework 4.6.1 可以运行针对 netstandard1.4 或更低版本的库。在 Linux 上,.NET Core 是您将运行的平台,它目前支持 netstandard1.0 - 1.6。 2.0 即将推出。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多