【问题标题】:Migrating Dll built on .Net v4.0 to .Net Core 1.0将基于 .Net v4.0 构建的 Dll 迁移到 .Net Core 1.0
【发布时间】:2016-08-23 07:16:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这个问题太宽泛了,可以在 SO 上回答。请在您的 VS 2015 中安装 visualstudiogallery.msdn.microsoft.com/… 并在您的 4.0 库上运行它,查看哪些应用程序不兼容并使用 .NET Core 兼容的 API 调用更改/删除/替换它们
  • @Tseng 这真的很有帮助。但安装此扩展后,它不会在目标平台列表中显示 .Net Core,而是显示 ASP.Net Core。

标签: .net asp.net-core coreclr


【解决方案1】:

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

您应该做的第一件事是在 .NET Portability Analyser 中测试您的 DLL。

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

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

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

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

更多详情请关注Core FX github documentation

尝试移植您的 dll:

  • 摆脱 csproj
  • 将其替换为 project.json(正确配置为面向 .NET Core 1.0)
  • 在 Visual Studio 2015 中打开项目
  • 尝试编译
  • 分析错误并纠正它们
  • 迭代(可能多次:))

祝你好运!

【讨论】:

    【解决方案2】:

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

    有很多 API 在 .NET Core 上不可用(至少目前如此)。例如,Registry API 对跨平台没有意义

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

    有一种名为 .NET standard 的新型库,因此如果您将源代码移植到此库,您应该可以在 .NET Framework 和 .NET core 上运行它

    【讨论】:

      猜你喜欢
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 2021-03-20
      相关资源
      最近更新 更多