繁体   English   中英

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

[英]How can I change a .NET standard library to a .NET framework library?

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

我尝试按照Microsoft 文档中的说明进行操作,但是当我尝试在属性中选择其他框架时,只能找到其他 .NET 标准版本。

我怎样才能迁移它? 我需要手动编辑.csproj文件吗?

打开项目文件(.csproj),将TargetFramework改成net462

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

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


在此处输入图片说明

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

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

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

我做了几个步骤,为我工作:

  1. git push你的代码,所以你有一个备份:)
  2. 在VS中卸载项目(右键点击项目并卸载)
  3. 在 VS 中编辑项目(右键单击并编辑)
  4. 将 TargetFramework OR/AND TargetFrameworkVersion 替换为<TargetFramework>netcoreapp2.0</TargetFramework>

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM