.net - 从 .Net Core 应用程序调用 .Net Framework 4(或 Mono)程序集

标签 .net .net-core visual-studio-2017

我有一个简单的 .Net Core Console 应用程序,在同一解决方案中引用 .Net Framework 4.6.2 项目。当我构建时,出现以下错误:

error CS0012: The type 'Object' is defined in an assembly that is not referenced. You must add a reference to assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.

我是否试图做一些不允许的事情?

是否有某种方法可以从 .Net Core 应用程序引用 .Net Framework 4.6(或 Mono)程序集(或 P/Invoke 它)?

使用 Visual Studio 2017、.Net Core 1.1

最佳答案

在 .NET Core 1.x 中,不允许引用 .NET Framework 4.6(或 Mono)程序集。 .NET Core 1.x 和 .NET Framework 是 2 个不同的运行时,它们的类型不会混合 - 正如构建错误消息所述。

相反,您可以做的是重新编译面向“.NET Standard”的 .NET Framework 4.6 程序集。 Read more about .NET Standard 。编译 .NET Standard 库允许该库在 .NET Framework、Mono 或 .NET Core 上运行。另一种选择是多目标 .NET Framework 4.6 程序集,因此它既针对 .NET Framework 4.6 又针对 .NET Core 1.1 进行构建。仅当 .NET Standard 不支持您的库所需的 API 时,才应执行此操作。这与 @VMAtm 的答案大致相同,但您可以在 VS 2017 中使用单个 .csproj 来完成。

好消息是,.NET Core 2.0 将支持您正在尝试做的事情,即 slated for release later this year .

关于.net - 从 .Net Core 应用程序调用 .Net Framework 4(或 Mono)程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42718943/

相关文章:

c++ - 使用没有内联代码的 dll 时出现 LNK2028 和 LNK2019 错误

docker - Docker build提示找不到nuget fallback包文件夹

visual-studio-2017 - 手动更新Visual Studio 2017

c++ - gdipluspath 为 cstddef 和 rpcndr.h 抛出不明确的字节

c# - Telerik RadGrid 和动态列的运行总计

.net - 更改运行 Windows 窗体程序的用户

C# WPF 应用程序 .NET Framework 4.8 与 .NET Core 3.1 与 .NET 5.0

c# - 如何通过依赖注入(inject)使用 RateLimiter 的 HttpClient DelegatingHandler?

asp.net - 生成 ModelState 字典的键

visual-studio - 无法从 Visual Studio 访问在 VSTS 符号服务器中发布的符号