50または60を超えるcsprojファイルを含む巨大なプロジェクトがあります。参照を終了する6つまたは7つの参照を削除し、これらすべてのプロジェクトに10または15の新しい参照を追加する必要があります。参照を一括追加したり、参照を削除したりするメカニズムはありますか?
または、すべてのプロジェクトで参照XをYに置き換えるという言い方がある場合は、それも非常に役立ちます。Nugetはオプションではないことを付け加えておきます。
50または60を超えるcsprojファイルを含む巨大なプロジェクトがあります。参照を終了する6つまたは7つの参照を削除し、これらすべてのプロジェクトに10または15の新しい参照を追加する必要があります。参照を一括追加したり、参照を削除したりするメカニズムはありますか?
または、すべてのプロジェクトで参照XをYに置き換えるという言い方がある場合は、それも非常に役立ちます。Nugetはオプションではないことを付け加えておきます。
これは簡単です。すべてのファイルを開き、.proj
不要な行を削除して、必要な行を追加するスクリプトを作成するだけです。それが最も簡単な方法です。VSやReSharper用のプラグインを作成するためのオプションもあると思いますが、これらのオプションはどちらもやり過ぎです。プロジェクトファイルは、結局のところ単なるXMLファイル(=テキストファイル)であり、そのように扱うことができます。
もちろん、これが繰り返し発生するアクションであることがわかった場合、または準拠する必要のある条件付きロジックがある場合は、プラグインを作成するのが賢明な選択です。
AutoHotKeyを使用してスクリプト/マクロを作成することにより、VisualStudioで複数のプロジェクトへの参照を追加できます。
以下の方法は、プロジェクトファイル内のテキストを直接操作するのではなく、実行中のVisual Studioのコピーと対話します。これは、マウスなしでキーボードのみを使用してすべて(ほとんど?)のことを実行できるという事実を利用しています。適切なプロジェクトを見つけたり、右クリックしたり、参照を開いたりするように、適切なキーをVisualStudioに送信することで機能します。
スクリプトを機能させるには、スクリプトを実行する前に、プロジェクトを強調表示した状態で[リソースビュー]ウィンドウを開く必要があります。これは、名前でプロジェクトを検索できるようにするためです(ソリューションエクスプローラーには、これを防ぐフォルダーがある場合があります)。また、プロジェクトウィンドウの名前をSolutionNameに変更し、 ReferenceNameを追加する参照の名前を変更して、スクリプトを調整する必要があります。projects.txtは、AutoHotKeyスクリプトと同じディレクトリにある単なるテキストファイルであり、参照を追加するプロジェクトの改行で区切られたリストが含まれています。
注:私はVisual Studio 2008を使用しています。また、睡眠時間を決定するために科学的な方法を使用したことはありません。それらは必要ない場合もあります。これは戦術的な解決策であり、スクリプトを最適化して改善できることは間違いありません。
; Prepare array from project list
ArrayCount = 0 ; Initialise array counter
Loop, Read, projects.txt ; This loop retrieves each line from the file, one at a time.
{
ArrayCount += 1 ; Keep track of how many items are in the array.
Array%ArrayCount% := A_LoopReadLine ; Store this line in the next array element.
}
IfWinExist SolutionName - Microsoft Visual Studio (Administrator) ; Check if VS2008 with solution is running
{
WinActivate ; Bring a window to front
Loop %ArrayCount%
{
element := Array%A_Index% ; Grabs current project name from array
Send % element ; types the name of the project
Sleep 100
Send {AppsKey}F{Tab}{Tab}{Space}
Sleep 100
Send ReferenceName{Enter}
Sleep 100
Send {Enter}
Sleep 100
}
}
else
{
MsgBox Cannot find "SolutionName - Microsoft Visual Studio (Administrator)" window.
}