将基于 .Net v4.0 构建的 Dll 迁移到 .Net Core 1.0

Migrating Dll built on .Net v4.0 to .Net Core 1.0

我有一个基于 dotnet 框架构建的 dotnet 库 (dll) v4.0。 现在我们想在 .Net Core framework 1.0.

中使用那个 dll

是否可以在 .Net Core 1.0 中直接使用使用以前版本的 dotnet 框架(如 v4.0)构建的旧库?

如果是,那该怎么做? 如果不是,那么需要做什么才能支持 .Net Core 1.0。

我浏览了各种 msdn 博客,但能够找到控制台应用程序的任何解决方案。他们对 ASP.Net 核心有很多了解,但对 .Net Core App.

的关注较少

不,无法在 .NET Core 上直接使用 .NET Framework 程序集。

有很多 APIs 在 .NET Core 上不可用(至少现在是这样)。例如,Registry API 对跨平台

没有意义

您需要手动移植源代码并重建它。

有一种名为 .NET standard 的新型库,因此如果您针对此移植源代码,您应该能够 运行 在 .NET Framework 和 .NET core 上使用它

不能直接在.NET Core 1.0中使用,但可以移植

您应该做的第一件事是在 .NET Portability Analyser.

中测试您的 DLL

此工具将以非常直观的方式告诉您正在使用哪些方法(及其关联的 class 和命名空间),这些方法在 .NET Core 1.0 中不受支持。

根据可行性(这取决于你,你知道你的代码),你可以选择尝试摆脱这个 classes/methods 并用 .NET Core 1.0 兼容代码替换它们。

.NET Core 1.0 不支持的功能示例:

  • AppDomains(用于代码隔离、动态程序集加载)
  • 远程处理
  • 二进制序列化

有关 Core FX github documentation

的更多详细信息

要尝试移植您的 dll:

  • 去掉 csproj
  • 将其替换为 project.json(正确配置为面向 .NET Core 1.0)
  • 2015 年 visual studio 打开项目
  • 尝试编译它
  • 分析错误并改正
  • 迭代(可能多次:))

祝你好运!