.net core 将.NET Framework 4.6.2迁移到.NET标准2.0

.net core 将.NET Framework 4.6.2迁移到.NET标准2.0,.net-core,.net-standard,.net Core,.net Standard,我们有一组在.NET Framework 4.6.2下创建的类库,我们希望将这些库迁移到.NET Core 2.0或.NET Standard 2.0中 我们有以下几种方法 创建一个新项目并复制代码 通过编辑CSPROJ文件转换现有项目 哪一种迁移库更好?.NET标准会影响.NET核心上的性能 是否有其他方法可以迁移这些集合。我认为可能对.NET标准2.0实际上是什么存在误解 创建.NET标准是为了跨.NET的多个不同实现创建一个通用API界面 这些实现包括.NET Framework、Mo

我们有一组在.NET Framework 4.6.2下创建的类库,我们希望将这些库迁移到.NET Core 2.0或.NET Standard 2.0中

我们有以下几种方法

  • 创建一个新项目并复制代码
  • 通过编辑CSPROJ文件转换现有项目
哪一种迁移库更好?.NET标准会影响.NET核心上的性能


是否有其他方法可以迁移这些集合。

我认为可能对.NET标准2.0实际上是什么存在误解

创建.NET标准是为了跨.NET的多个不同实现创建一个通用API界面

这些实现包括.NET Framework、Mono、.NET核心等。从这个意义上讲,.NETCore是.NET的一个版本,在.NET标准和.NETCore之间没有联系

如果您创建一个.NET标准库,它基本上是与平台无关的,这意味着它可以在任何支持您所针对的.NET标准版本的.NET实现上运行。这意味着,如果将现有的.NET Framework 4.6.2库升级到.NET标准,则只能获得该库的可移植性,但如果仍在针对.NET Framework的应用程序中使用该库,则不会获得任何性能提升,因为该库仍将在同一.NET Framework上运行

如果您将整个应用程序本身移植到.NET Core(3.0推出后会更容易),您肯定会看到性能的提高,因为您的库将在.NET Core上运行


至于移植,通常最简单的方法是创建一个空库,手动将现有类复制到新库中,然后安装所有必需的NuGet软件包。

在@Martin的回答中添加,要将现有的.NET Framework应用程序迁移到.NET Core,您可以先从。此工具是VisualStudio的一个扩展,提供了有关应用程序灵活性的详细报告

将现有项目迁移到.NET Core需要一段时间,这取决于解决方案的性质。此工具在确定项目状态时非常有用。 如果您只针对.NET framework 4.6.2,迁移应该相对简单。以下是您可以做的:

  • 创建新的.NETSDK样式的项目

  • 编辑新项目的
    csproj
    文件,并将目标框架更改为net462

  • net462

  • 将文件从旧项目移动到新项目

  • 删除旧项目并更新引用

  • 对所有类库重复步骤


  • 我建议从具有最小依赖性的类库开始,测试更改,并在转换完所有简单的更改后转移到更复杂的类库。

    Hi。因为你们描述的两种方式都能让你们做你们想做的事,所以我投票决定结束这场辩论,因为这主要是基于你们的观点。你可以做任何一种,它们都有各自的优点和缺点,但最终你应该能够用这两种方法完成任务。假设OP知道所有这些,这个答案根本无法回答所问的问题。从这个问题来看,OP似乎不知道区别——即使使用NET Core Standard和NET Core的名称——这两个东西是不可比较的——一个是API接口,另一个是平台。答案也回答了移民问题。我不确定遗漏了什么:-)这并不能回答问题。“这意味着,如果将现有的.NET Framework 4.6.2库升级到.NET标准,则只能获得该库的可移植性”。“是的,这就是这个问题所要寻找的。”托马斯博比对不起,但在这方面我必须不同意你的看法。问题是,将库移植到.NET Core还是.NET Core标准,在这两者中,第二个选项根本不存在,因此我认为有必要首先澄清这一误解。这是必要的,以表明性能增益实际上是由库将在其中使用的运行时决定的-因为对于核心库,性能增益是自动的,而对于标准库,性能增益是有条件的。@MartinZikmund好吧,让我们将问题改为迁移到.NET Core和.NET Standard,这是一个非常有价值的问题,目前还没有答案。我的理解是,使用.NET标准构建的类库可能会出现性能问题(例如,您不能使用netstandard2.1或netcoreapp3.0中API的上游性能改进),但如果我们的目标仍然是net462,那么即使我们迁移到.NET Core,它也只会指向.NET framework。所以,我的主要动机是将.NET Framework迁移到Core是为了提高性能,但如果我们在核心应用程序中仍然指向net462,那么性能会有任何提高还是降低?要迁移到.NET Core,我建议首先从analyzer工具开始,看看应用程序的兼容性。其余步骤仍然可以保持不变。如果您的应用程序是100%兼容的,您可以将目标选择为
    netcoreapp2.0
    (或者现在选择
    netcoreapp2.1
    )。否则,将项目转换为新样式,但将目标保留为
    net62
    ,将所有不兼容的代码转换为
    .net core
    ,然后将目标框架更改为
    .netcore