8

現在、ソース コードを再編成し、新しいディレクトリ構造に移動しています。これは、Visual Studio ソリューションとプロジェクト ファイルに影響を与えます。アセンブリ参照、場合によっては出力ディレクトリ、ビルド前およびビルド後のイベントなどは、変更を反映するように更新する必要があります。

多くのソリューションとプロジェクトがあるため、VS 用の PowerShell "プロバイダー" のようなものを使用して、PowerShell を使用してプロセスを部分的に自動化することを望んでいました。

理想的な世界では、次のようなことができます。

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

Visual Studio のスクリプトを作成するためのPowerConsole (まだ完全には調査していません) については知っています。ただし、ドキュメントが不足しており、それが本当に私のニーズを満たしているかどうかはわかりません。

ソリューションとプロジェクト ファイルを簡単に操作する方法はありますか? PowerShell が望ましいですが、他の提案も受け付けています。

4

1 に答える 1

13

私の経験では、(Visual Studio の内外から) PowerShell を使用して 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 に答える