5

我們有一個VS2008解決方案文件,其中包含大約80個項目(是的,我知道它很爛)。如何將較大的VS解決方案分解爲較小的解決方案

這些項目安排在各種文件夾中,有些可能依賴頂級「Libs」文件夾中的其他第三方DLL。

我們希望將其重構爲幾個較小的.sln文件,每個文件都包含合理數量的項目。

問題是,當移動項目文件時,存儲在其中的相對路徑將會中斷,因此我們將不得不做大量的手動「修補程序」來解決這個問題。

是否有任何工具或任何經過驗證的技術來做這樣的事情?

回答

1

我們做了類似的事情,爲了解決引用問題,我們編寫了一個快速實用程序來解析.csproj或.vbproj文件(基本上是xml文件)並根據.proj文件本身的位置修復受影響的路徑位於重構之後。這比手動更改項目xml或添加刪除引用以避免人爲錯誤要好。

一旦知道了proj文件的位置以及常用文件(或其他文件)的位置,就可以用相對路徑修改項目文件中的Reference節點。因此,對於例如,你可能改變原有

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

在.proj文件

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

如果這也正是NHibernate.dll現在的生活。

希望這會爲你們工作。

+0

謝謝。我也在考慮爲此創建一個自定義實用程序。在您的示例中,您演示了一個稍有不同的問題,其中用於引用的DLL的實際文件夾可能完全改變(而不是作爲.csproj複製/移動操作的結果)。你是否也在你的公用事業中處理這個問題? – 2012-07-20 19:17:38

+0

我們處理了庫文件夾的變化,並不是所有的proj文件都被移動了,但即使它不是所有的庫文件夾,但實際的.csproj文件都是相對移動的,我會認爲類似的邏輯仍然可以應用。對於每組項目文件一起移動到一個解決方案中,您將知道這些項目的相對路徑需要如何解決。也許可以爲屬於解決方案的一組項目文件的每個引用創建一個鍵值對(之前,之後),並相應地更新.proj文件。希望這是有道理的。 – desigeek 2012-07-20 20:42:54