2010-06-28 46 views
3

我正在研究一個c#項目,最近我們決定重構源代碼的目錄結構。 我正在進行重組,並想問您一些關於進行變更的最佳方式的問題。 重組基本上是將所有項目的當前目錄更改爲更加結構化和邏輯順序。如何在c#項目中更好地改變目錄結構(sln和項目)

目前的結構是(這是一個方案):

  • 主要方向:

    • 項目
    • 項目
    • 風向
      • 項目
      • 項目
      • 項目
    • 風向
      • 項目
      • 項目
      • 項目
    • 項目風向+溶液文件
    • 項目風向+溶液文件
    • Dir
      • 解決方案文件。
      • 項目
      • 項目
    • 項目迪爾 等。

的目標方案是: TFS項目: 主要 - 源 - 迪爾 - 解決方案文件。 - 項目 - 項目 - 項目 - 項目

 - Dir 
     - Dir 
      - Project 
      - Project 
      - Project 
     - Dir 
      - Solution file. 
     - Dir 

     - Project 
     - Project 

項目之間的相對位置在解決方案改變,也相對位置。

問題是如何以最佳方式進行更改: - 如何解決每個項目的所有參考? - 如何解決所有的解決方案? - 有沒有可用的工具?

回答

1

我不知道有任何工具可以自動執行此操作,但我知道您有兩個選項,選項1是使用VS執行重構(更長)或選項2使用類似於powershell(或您最喜歡的腳本語言)來更新sln和csproj引用。

如果使用選項1:

  1. 使用VS創建新的目錄,並手動將文件移動到它們
  2. 四處移動您的SLN文件由手(引用裏面的文件都是相對的)子文件夾引用將保持不變。

如果使用選項2:

  1. 將您的非的csproj /前哨文件到它們的目標位置,請確保您瞭解您的路徑的相對變化。
  2. 創建一個可處理XML文件的腳本(對於proj文件,您需要對SLN文件進行常規文本解析),然後打開這些文件。將每個「item」節點重定向至其重新計算的目標位置中的路徑(將會是.. \,或file.etx)。

不幸的是,它會是非常的手動,很容易出錯。我推薦選項#1,並且剛剛完成了一個項目,這個項目有100多個csproj和30個sln文件。有大約4000個源文件,我手動移動,然後使用查找替換在VS工作室(與項目卸載)更新。

祝你好運。

3

如果使用選項2:

將您的非的csproj /前哨文件到它們的目標位置,請確保您瞭解您的路徑的相對變化。

幾個新增的:

  1. 我有腳本執行所需文件操作爲好。當然,請確保先備份原始解決方案。
  2. .sln文件是而不是 XML。不過,它們是一個非常直接的語法文本文件。因此,您必須編寫自己的解析器,或者考慮使用Visual Studio的DTE自動化對象來處理解決方案文件的內容,如此線程所示:Easy way to add multiple existing .csproj to a Visual Studio Solution?。該示例是用PowerShell編寫的,但VBScript中的方法將與此相同。
+0

好點@DmytroL我的意思是* proj文件是XML,SLN文件是VS對於INI文件的超級特殊功能。 – GrayWizardx 2010-07-23 16:36:14

+0

+1,用於推薦DTE,它很吸引人,但如果你經常這樣做,它可以使這些東西變得更容易。 – GrayWizardx 2010-07-23 16:38:02