我们目前正在重组我们的源代码,在新目录中移动内容 结构体。这会影响我们的Visual Studio解决方案和项目文件,其中包括程序集引用,可能的输出目录,生成前和生成后事件等等,必须更新以反映我们的更改。
由于我们有很多解决方案和项目,我希望使用PowerShell部分自动化这个过程,就像VS的PowerShell“提供者”一样:
在一个理想的世界里,我可以做类似的事情:
$MySolution.Projects["MyProject"].PostBuildEvent = "copy <this> to <that>"
我知道有关PowerConsole(我还没有完全探索过)的脚本Visual Studio。但是,文档很少,我不确定它真的涵盖了我的需求。
还有其他方法可以轻松操作解决方案和项目文件吗?最好是在PowerShell中,但我愿意接受其他建议。
答案 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>