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

时间:2018-07-05 14:28:19

标签: c# .net .net-standard .net-framework-version .net-4.6

我正在为C#中的简单解析器编写类库。最初创建它时,我使用的是.NET标准2.0,但现在我需要将其迁移到.NET 4.6,以符合解决方案中的其他项目以及使用NUnit的要求。

我尝试遵循in the Microsoft documentation的说明,但是当我尝试在属性中选择另一个框架时,我只能找到其他.NET标准版本。

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

4 个答案:

答案 0 :(得分:13)

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

  <PropertyGroup>
    <TargetFramework>net462</TargetFramework>
  </PropertyGroup>

答案 1 :(得分:6)

我在Visual Studio 2017中的个人经历是,重新创建项目并添加现有资源是最简单,最安全,最有效的方法-因为基于.Net Framework的csproj文件具有额外的xml元素(与Standard相比,基于),似乎仅更改“ TargetFramework”是不够的。 以下是默认情况下出现的部分差异:


enter image description here

答案 2 :(得分:2)

如果您将类库发布为Nuget包,则有更好的方法进行设置。查看这篇文章:

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

基本上,您可以为多目标设置类库,从而将其导入.net核心项目以及不同版本的.net框架中。

答案 3 :(得分:0)

我做了一些为我工作的步骤:

  1. git push您的代码,因此您可以进行备份:)
  2. 在VS中卸载项目(右键单击该项目并卸载)
  3. 在VS中编辑项目(右键单击并编辑)
  4. 将TargetFramework OR / AND TargetFrameworkVersion替换为 <TargetFramework>netcoreapp2.0</TargetFramework>

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

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

  7. 如果需要的话,请保留描述构建选项的PropertyGroup(我希望我的习惯是自定义的)
  8. 删除引用和文件引用,不需要它们。
  9. 关闭文件并重新加载(右键单击重新加载)。
  10. 删除不需要的assemblyinfo文件(从属性文件夹中),程序集版本现在来自proj
  11. 右键单击项目并转到属性,以查看proj文件中没有任何错误。确保您没有错别字或未关闭的标签。
  12. 构建。如果缺少依赖项,请右键单击该项目,然后添加它们。 -我想您不想在项目中对其进行编辑。或者,您可以根据需要执行dotnet还原或dotnetbulid来添加它们。

希望这对您有用。它们似乎有很多步骤,但并没有那么复杂,这是一次努力。