2012-05-23 10 views
7

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

私たちは多くのソリューションやプロジェクトを持っているので、私の希望は、部分的にPowerShellを使用してプロセスを自動化することでしたが、VSのためのPowerShellの「プロバイダ」のようなもので:理想の世界では

、私は何かをすることができるだろう以下のような:

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

私が知っている程度PowerConsoleのVisual Studioのスクリプトを作成するために(私はまだ完全に探求していないもの)。しかし、ドキュメントは不十分で、私のニーズを本当にカバーしているかどうかはわかりません。

ソリューションやプロジェクトファイルを簡単に操作するためのその他の機能はありますか? PowerShellではできれば好きですが、私は他の提案にもオープンしています。

答えて

10

私の経験上、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

ないこれが可能になっているか確認してくださいそれは質問の1/2だけを扱うので答えてください。ソリューションファイルはXMLではないので、XMLファイルを開く方法については何も指摘していません。 – nagytech

+3

@Geoist OPは、「PowerShellを使用してプロセスを部分的に自動化することができたら嬉しいです」と言いました。私の経験上、いったんプロジェクトファイルが変更されると、プロジェクトファイルのGUIDや名前ではなく、変更されたパスしかないと仮定すると、ソリューションファイルを手作業で修正するのは比較的簡単です。もちろん、あなた自身のより有用な答えを自由に追加することができます。 –

関連する問題