代码之家  ›  专栏  ›  技术社区  ›  Edward Minnix

如何将.NET标准库更改为.NET框架库?

  •  14
  • Edward Minnix  · 技术社区  · 7 年前

    我在用c_编写一个简单解析器的类库。当我第一次创建它时,我使用了.NET标准2.0,但现在我需要将它迁移到.NET 4.6,以符合我的解决方案中的其他项目,并使用nunit。

    我试着按照指示去做 in the Microsoft documentation ,但当我尝试在属性中选择另一个框架时,只能找到其他.NET标准版本。

    如何迁移它?我需要手动编辑 .csproj 文件?

    4 回复  |  直到 7 年前
        1
  •  18
  •   Jammer    7 年前

    打开项目文件(.csproj)并将targetframework更改为net462

      <PropertyGroup>
        <TargetFramework>net462</TargetFramework>
      </PropertyGroup>
    
        2
  •  12
  •   Vlad    7 年前

    我在visual studio 2017的个人经验是 再造项目,增加现有资源 是最简单、最安全和最有效的方法-因为基于.NET框架的csproj文件有额外的XML元素(与基于标准的相比),似乎仅仅更改“targetframework”是不够的。 以下是默认情况下出现的部分差异:


    enter image description here

        3
  •  2
  •   Marko    7 年前

    如果将类库发布为nuget包,则有更好的方法来设置它。看看这篇文章:

    https://weblog.west-wind.com/posts/2017/Jun/22/MultiTargeting-and-Porting-a-NET-Library-to-NET-Core-20

    基本上,您可以为多目标设置类库,允许将其导入到.NET核心项目和.NET框架的不同版本中。

        4
  •  0
  •   Community CDub    6 年前

    我为自己做了一些工作:

    1. git push 你的代码,所以你有备份:)
    2. 在vs中卸载项目(右键单击项目并卸载)
    3. 在vs中编辑项目(右键单击并编辑)
    4. 将targetframework或/和targetframeworkversion替换为 <TargetFramework>netcoreapp2.0</TargetFramework>

    5. 将项目行(通常是xml根之后的第一行)更改为: <Project Sdk="Microsoft.NET.Sdk" >

    6. 删除通常是第二行的导入(在xml根之后)

    7. 如果需要,请保留描述生成选项的属性组(我希望我的属性组是自定义的)
    8. 删除引用和文件引用,不需要它们。
    9. 关闭文件并重新加载(右键单击“重新加载”)。
    10. 删除assemblyinfo文件(从properties文件夹中),因为不需要它,程序集版本现在来自proj
    11. 在项目上单击鼠标右键并转到“属性”,以查看项目文件中没有任何错误。确保你没有错别字或标签不接近。
    12. 建造。如果缺少依赖项,请右键单击项目并添加它们。-我想你不想在项目中编辑它们。或者可以执行dotnet还原或dotnebulid来添加它们,如您所愿。

    希望这对你有用。它们看起来有很多步骤,但没有那么复杂,这是一次性的努力。