使用PowerShell修改Visual Studio解决方案和项目文件

时间:2012-05-23 10:27:17

标签: visual-studio-2010 powershell automation

我们目前正在重组我们的源代码,在新目录中移动内容 结构体。这会影响我们的Visual Studio解决方案和项目文件,其中包括程序集引用,可能的输出目录,生成前和生成后事件等等,必须更新以反映我们的更改。

由于我们有很多解决方案和项目,我希望使用PowerShell部分自动化这个过程,就像VS的PowerShell“提供者”一样:

在一个理想的世界里,我可以做类似的事情:

$MySolution.Projects["MyProject"].PostBuildEvent = "copy <this> to <that>"

我知道有关PowerConsole(我还没有完全探索过)的脚本Visual Studio。但是,文档很少,我不确定它真的涵盖了我的需求。

还有其他方法可以轻松操作解决方案和项目文件吗?最好是在PowerShell中,但我愿意接受其他建议。

1 个答案:

答案 0 :(得分:11)

根据我的经验,使用PowerShell(从Visual Studio内部或外部)操作Visual Studio解决方案的最简单方法是将项目文件加载为XML并使用PowerShell进行操作。

$proj = [xml](get-content Path\To\MyProject.csproj)
$proj.GetElementsByTagName("PostBuildEvent") | foreach {
    $_."#text" = 'echo "Hello, World!"'
}
$proj.Save("Path\To\MyProject.csproj")

如果您在NuGet包管理器控制台中运行脚本,则可以获取所有项目文件的路径,如下所示:

PM> get-project -all | select -expand FileName
C:\Users\Me\Documents\Visual Studio 10\Projects\MyProject\MyProject.csproj
C:\Users\Me\Documents\Visual Studio 10\Projects\MyProject\MyProjectTests.csproj
PM>