5

約80のプロジェクトを含むVS2008ソリューションファイルがあります(はい、うんざりです)。大規模なVSソリューションをより小さなソリューションに分割する方法

プロジェクトはさまざまなフォルダに配置されており、一部は最上位の "Libs"フォルダ内の他のサードパーティのDLLに依存することがあります。

これをいくつかの小さな.slnファイルにリファクタリングしたいと思います。各ファイルには、適切な数のプロジェクトが含まれています。

問題は、プロジェクトファイルを移動するときに、その中に保存されている相対パスが壊れてしまうため、修正するためにたくさんの手動の「パッチアップ」が必要になります。

このようなことを実行するためのツールや実績のあるテクニックはありますか?

答えて

1

参照を修正するために、.csprojまたは.vbprojファイル(基本的にはxmlファイル)を解析し、.projファイル自体の場所に基づいて影響を受けるパスを修正するクイックユーティリティを作成しましたリファクタリング後に配置されました。手動でプロジェクトのXMLを変更するか、ヒューマンエラーを避けるために参照を削除するよりも優れていました。

projファイルの場所と共通ファイル(または他のファイル)の場所を知ったら、プロジェクトファイル内の参照ノードを相対パスで変更します。だから、例えばのために、あなたははNHibernate.dllが今住んでいるところだ場合

<Reference Include="NHibernate"> 
     <HintPath>..\Common\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

に.projファイルの元

<Reference Include="NHibernate"> 
     <HintPath>..\..\ServicesShared\Library\NHibernate.dll</HintPath> 
</Reference> 

を変更する必要があります。

うまくいけば、これはあなたのためにうまくいくでしょう。

+0

ありがとうございました。私はそれのためのカスタムユーティリティを作成するという流れに沿って考えていました。あなたの例では、参照されるDLLに使用される実際のフォルダが(.csprojのコピー/移動操作の結果ではなく)完全に変更される若干異なる問題を示しています。ユーティリティでこれも処理しましたか? –

+0

私たちはライブラリフォルダの変更を処理しましたが、すべてのprojファイルが移動されるわけではありませんが、ライブラリフォルダではなく実際の.csprojファイルが相対的に移動されたとしても、適用されます。 1つのソリューションにまとめて移動されたプロジェクトファイルのセットごとに、それらのプロジェクトの相対パスを修正する必要があることがわかります。たぶん、ソリューションに属する一連のプロジェクトファイルの参照ごとに(前、後)のキー値のペアを作成し、それに応じて.projファイルを更新することができます。これが理にかなってほしい。 – desigeek

関連する問題