C# 如何将.NET标准库更改为.NET framework库?

C# 如何将.NET标准库更改为.NET framework库?,c#,.net,.net-standard,.net-framework-version,.net-4.6,C#,.net,.net Standard,.net Framework Version,.net 4.6,我正在用C编写一个简单解析器的类库。当我第一次创建它时,我使用了.NET标准2.0,但现在我需要将它迁移到.NET 4.6,以符合解决方案中的其他项目,并使用NUnit 我尝试按照说明进行操作,但当我尝试在属性中选择另一个框架时,我只能找到其他.NET标准版本 如何迁移它?是否需要手动编辑.csproj文件?打开项目文件.csproj并将TargetFramework更改为net462 <PropertyGroup> <TargetFramework>net462&l

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

我尝试按照说明进行操作,但当我尝试在属性中选择另一个框架时,我只能找到其他.NET标准版本


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

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

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

如果您要将类库发布为Nuget包,那么有一种更好的设置方法。查看本文:


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

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


我为自己完成了以下几个步骤:

git推送您的代码,这样您就有了备份: 在VS中卸载项目右键单击项目并卸载 在VS中编辑项目右键单击并编辑 将TargetFramework或/和TargetFrameworkVersion替换为 netcoreapp2.0

将项目行(通常是xml根目录后的第一行)更改为:

删除通常位于xml根目录后第二行的导入

保留描述构建选项的属性组,如果您需要,我希望我的属性组是自定义的 删除引用和文件引用,它们不是必需的。 关闭文件并重新加载右键单击“重新加载”。 从properties文件夹中删除assemblyinfo文件,因为它不是必需的,程序集版本现在来自proj 右键单击项目并转到“属性”以查看项目文件中是否没有任何错误。确保你没有打字错误或标签不接近。 建筑如果缺少依赖项,请右键单击项目并添加它们。-我想您不想在项目中编辑它们。或者,您可以根据需要执行dotnet还原或dotnebulid来添加它们。
希望这对你有用。这些步骤似乎很多,但并不复杂,这只是一次努力

您使用的是哪个版本的Visual Studio?Visual Studio Professional 2017很有趣,您说现在我需要将其迁移到.NET 4.6,以符合解决方案中的其他项目,并使用NUnit。为什么需要迁移?通常,NUnit可以很好地与.NET标准配合使用,尽管承载NUnit测试用例的程序集可能需要以net46为目标。假设测试所在的程序集必须是.NET framework或.NET core。4.6是因为解决方案中有6个项目,而我的项目只是其中的一个,其他项目都是4.6。netstandard不必这样做。为什么有人会将目标锁定在一个有相当多bug并且必须很快更新到4.6.1的框架版本,这是一个相当神秘的问题。修正这个问题,在你做4.7.1的时候,把它改成4.7.1。这家伙是对的。与公认的答案相比,有更多的变化。这是正确的-不要按照公认的答案去做。你可能会打乱你的项目,浪费很多时间。我同意,不要仅仅改变xml中的目标框架——要迁移任何东西,还需要做更多的工作!从解决方案中删除现有项目,重命名文件夹,在同一位置以相同的名称创建新项目,复制文件,将其添加到项目,添加引用。两分钟,超级安全,超级简单。我找不到任何csproj文件导航到包含您的项目的文件夹。@NithinChandran:卸载项目,右键单击项目选择编辑虽然这在技术上使其基于4.6.2构建,但它确保heck不会根据OP迁移任何内容。事实上,这可能会给您留下更多不同的内容,问题。没有给我留下任何问题,这正是我想要的。感谢您提供的完美简单的解决方案!我试过了,这个项目甚至不会再加载了。我得到一个错误,元素下的元素无法识别。也无法构建。看起来您正在以另一种方式进行转换,从.NETFramework转换为.NETStandard-无论哪种方式,这样做都可能会出现很多问题…很好。这应该是一个更广为人知的特性。不知道为什么微软不通过直接在用户界面上允许多重选择来让它更加明确。