我们有许多包含数百个项目的解决方案。在迁移到新版本的 VisualStudio 期间,我们必须更改所有项目的目标框架版本。但是通过项目属性/应用程序/目标框架单击项目来更改此设置是非常无效的。
我们可以一次更改解决方案中所有项目的版本吗?有什么方法可以自动/以编程方式执行此活动吗?
我们有许多包含数百个项目的解决方案。在迁移到新版本的 VisualStudio 期间,我们必须更改所有项目的目标框架版本。但是通过项目属性/应用程序/目标框架单击项目来更改此设置是非常无效的。
我们可以一次更改解决方案中所有项目的版本吗?有什么方法可以自动/以编程方式执行此活动吗?
csproj 文件只不过是 XML,以编程方式编辑文件很容易。
这是我创建的一个小应用程序,它利用 Linq-Xml 查找和更新根文件夹下的所有 csproj 文件:
var path = @"--Path to Root--";
var files = Directory.GetFiles(path, "*.csproj", SearchOption.AllDirectories);
XNamespace ns = "http://schemas.microsoft.com/developer/msbuild/2003";
foreach (var file in files)
{
var doc = XDocument.Load(file);
var element = doc.Descendants(ns + "TargetFrameworkVersion").Single();
element.Value = "v4.5";
doc.Save(file);
}
由于您已将其标记为tfs,因此您可能需要对所有 csproj 文件执行签出,以删除只读标志。或者,或者,只需检查所有内容,然后用于tfpt uu
还原未更改的文件。