【问题标题】:Modifying Visual Studio solution and project files with PowerShell使用 PowerShell 修改 Visual Studio 解决方案和项目文件
【发布时间】:2012-05-29 21:22:19
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: visual-studio-2010 powershell automation


    【解决方案1】:

    根据我的经验,使用 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>
    

    【讨论】:

    • 不确定这应该如何作为答案,因为它只处理 1/2 的问题。解决方案文件不是 XML,您没有说明如何打开它们。
    • @Geoist OP 说“我希望使用 PowerShell 部分自动化该过程”,这就是我希望我帮助他实现的 - 使用 PowerShell 部分自动化该过程。以我的经验,一旦修改了项目文件,手动修改解决方案文件就相对容易了,因为假设只是更改了路径而不是项目 GUID 或名称,它们就相当简单了。当然,您可以随意添加您自己的更有用的答案。
    猜你喜欢
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多