如何一次性将多个针对 3.5 的项目(相同的解决方案)升级到 4.0?

Posted

技术标签:

【中文标题】如何一次性将多个针对 3.5 的项目(相同的解决方案)升级到 4.0?【英文标题】:How can I upgrade multiple projects (same solution) that's targeting 3.5 to 4.0 in one go? 【发布时间】:2011-07-28 07:07:13 【问题描述】:

在一个大型解决方案中,我们有大约 100~ 个项目,所有项目都针对 3.5,目前在 VS.NET 2010 中。

现在我们要把它升级到.NET 4.0,我是不是必须一一去改变他们的目标?或者有什么方法可以自动化这个过程?

【问题讨论】:

Change the Target Framework for all my projects in a Visual Studio Solution 的可能重复项 【参考方案1】:

Target Framework Migrator 扩展非常好用。

安装后只需转到Tools -> Target Framework Migrator

【讨论】:

【参考方案2】:

在升级许多项目和类似操作时,我通常使用在文件中查找和替换。

首先我升级一个项目并比较结果,然后在我的 .csproj 文件中搜索并替换相关部分。

【讨论】:

【参考方案3】:

是的。您必须分别更改它们才能使用 .Net 4.0。

或者您可以创建一个脚本来更改所有项目文件的文本并更改支持的框架。但是,这将需要更多的时间,而不是仅仅通过所有这些并改变它们。

请注意,您不必这样做。有向后兼容性.. 编译为与 .Net 3.5 一起使用的项目将与 .Net 4.0 一起使用

您真正需要做的只是将安装项目更改为包含 .Net 4.0 作为先决条件。

除此之外,您无需更改框架,直到您真正想要使用新框架中的某些内容。

【讨论】:

这就是我们想要使用 4.0 功能的想法,但我不想手动更改 100 个项目,这需要大约 300 次点击 :) 所以在每个项目中,当你开始使用 4.0 功能时,再点击 1 次,将其更改为 4.0... 懒惰更新 :) 懒惰更新,不错:)【参考方案4】:

我不确定从 3.5 升级到 4.0,但如果你从 2.0 升级到 4.0,你会看到 VS2010 实际上添加了一个默认的 app.config 文件(如果你没有你的own),这意味着您还必须将此文件复制到每个项目中。此外,如果您有一些 *.designer 文件,这些文件也可能会发生变化,因此您必须相应地更新...

总结一下,流程如下:

    升级一个项目并比较所有文件的更改(我发现最好使用源代码管理) 编写一个脚本/工具来枚举整个解决方案并... 一种。将 app.config 复制到每个项目文件夹 湾。更改 *.*proj 文件以匹配 p.1 的差异 C。如果需要,更改其余文件

【讨论】:

【参考方案5】:

当我们从 2.0 升级到 3.5 + VS2008 时,我做过类似的事情。我确实使用了 awk(实际上是 gawk)。我能够进行迁移,而无需在转换时冻结其他开发人员签入。

awk 允许我指定一系列 RegEx 模式以在每个文件中查找并执行“操作”。开箱即用的支持功能与我习惯使用 vbscript 的功能相当。

我从这里得到了傻瓜 - http://unxutils.sourceforge.net/

我发现这篇文章对学习很有帮助 - http://www.cs.utah.edu/dept/old/texinfo/gawk/gawk_toc.html

【讨论】:

以上是关于如何一次性将多个针对 3.5 的项目(相同的解决方案)升级到 4.0?的主要内容,如果未能解决你的问题,请参考以下文章

针对 .NET Framework 3.5 编译的项目允许 C# 4.0 功能

C#如何创建一个具有多个相同命名项目的解决方案?

如何从多个链接调用相同的 fancyapp [fancybox 3.5] javascript?

如何一次在一个解决方案中编写多个项目中的代码? [Visual Studio / Xamarin]

为啥我的 .net 项目针对 .net framework 3.5 的 System.dll 版本是 2.x?

记录一次EFCore CodeFirst迁移实践,解决多个项目表结构同步更新问题