.net NET 5支持旧的csproj格式吗?

4nkexdtk  于 2023-02-06  发布在  .NET
关注(0)|答案(1)|浏览(118)

从.NET Framework迁移到.NET 5+的最大障碍之一是必须将所有的csproj转换为新的SDK样式格式。没有工具可以自动执行此操作,必须手动完成。
我想知道这个转换是否有必要?有没有办法在保留旧的cs项目的同时切换到.NET?
我团队的解决方案中有300多个项目,看起来我们永远不会切换,工作量太大了。
我试过手动更新,但没有成功。
也许我错过了一些东西,有一种方法来实现这一点?

scyqe7ek

scyqe7ek1#

不是直接回答你的问题,但它可能会有帮助。我的目标不是转换到。net 5,只是转换我的项目SDK风格。
我有一个www.example.com 4.0项目的解决方案four.net,包括一个WPF项目和四个xUnit测试项目。我使用了一个.net upgrade assistant,在“将项目转换为sdk风格步骤”之后我就停了下来。它工作得很顺利。我从这个堆栈溢出帖子得到了这个想法(见接受答案下的评论)。
上面的链接说Visual Studio 2022或更高版本,但我有2019,它工作得很好。我认为它说,如果你要做的是完全迁移到.net 6/7,你需要2022。
在转换到SDK之前我做的唯一一件事是更新每个项目以使用PackageReference而不是packages. config。我不确定这是否重要,因为我在决定将我的项目转换到SDK风格之前做了这件事。如果你右键单击项目,你会看到一个名为“migrate package.config to package reference”的命令。在对所有项目都做了这件事之后,请转到Tools〉Nuget Package Manager〉包管理器设置,在包管理器下将“默认包管理格式”设置为PackageReference。请参见here
然后,我一次转换一个项目,确保每个项目在进入下一个项目之前都构建好。我遇到的唯一问题是迁移助手在每个项目引用中添加了一个更新版本的Microsoft.CSharp。对于我的WPF项目,我不得不删除它,并替换为.net 4.0版本;对于其他项目,我只是不得不删除它,因为它没有被使用。我不知道为什么它这样做,但认为这是在迁移的后续步骤。
csprojs现在更干净了,同时在项目右键菜单中启用了“移除未使用的引用”选项。
我还确认了我也可以从命令行使用dotnet构建myProject.csproj。

相关问题