8

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

由于我们有许多解决方案和项目,我希望使用 PowerShell 部分自动化该过程,例如 VS 的 PowerShell“提供者”:

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

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

我知道用于编写 Visual Studio 脚本的PowerConsole(我还没有完全探索过)。但是,文档很少,我不确定它是否真的能满足我的需求。

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

4

1 回答 1

13

根据我的经验,使用 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>
于 2012-06-02T10:39:35.330 回答