2011-11-28 102 views
71

我從這篇文章修改演示應用程序:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx如何更改整個項目的命名空間?

我需要更新所有文件中使用我的命名空間,例如現在文件位於:

MySolution\MyApp\DemoApp\ViewModel\MainWindowViewModel.cs 

使用這樣的命名空間:

namespace DemoApp.ViewModel 
{ 
/// <summary> 
/// The ViewModel for the application's main window. 
/// </summary> 
public class MainWindowViewModel : WorkspaceViewModel 

我需要在這裏移動文件(刪除DemoApp文件夾):

MySolution\MyApp\ViewModel\MainWindowViewModel.cs 

,並使用正確的命名空間:

namespace MyApp.ViewModel 
{ 
.... 

如何做到這一點在2010年的Visual Studio?

更新確定這裏可能重複Change Project Namespace in Visual Studio現在我知道如何更改項目的命名空間,但如何移動文件系統上的文件? (擺脫 「DemoApp」 文件夾中)

+3

正如僅供參考,您不一定需要名稱空間來匹配.NET中的文件夾結構,這不是必需的。 –

+1

正如詹姆斯所說,這不是必需的......但我會質疑爲什麼有人沒有在我需要的應用程序上「完成工作」。 – NotMe

+1

關於移動文件..嗯,剪切/粘貼和拖放通常在Visual Studio解決方案管理器中工作..甚至只是重命名文件夾或刪除。取決於你真正想要做什麼。 – NotMe

回答

85

我想象一個簡單的替換文件(按Ctrl ++ H^)將只是做的伎倆;只需用namespace MyApp替換namespace DemoApp即可。之後,構建解決方案並查找未知標識符的編譯錯誤。完全限定DemoApp的任何內容都需要更改爲MyApp

+42

重要;更改項目屬性中的默認名稱空間;這控制了像resx –

+0

這樣的命名空間我有幾個代表WPF窗口的XAML文件,所以這對我不起作用。 – Pieter

+3

您還應該在任何'using'語句上運行Replace從使用DemoApp'變爲'使用Myapp'。 – swbandit

110

轉到某個位置,命名空間在您的某個文件中聲明。將光標置於要更改的名稱空間部分,然後按F2。這應該重命名每個文件中的命名空間。至少,它在我創建的小演示項目中起作用來測試這個答案!

根據您的VS版本,快捷方式也可能是按Ctrl - [R按Ctrl - [R

+3

是的,這是最簡單的方法。 –

+4

這應該是公認的答案!由於某種原因, –

+1

不適用於我。我按F2並沒有發生。 – javapowered

0

我知道它很晚,但對於任何想從現在開始做的人來說,我希望這個答案能夠證明一些幫助。如果您安裝了CodeRush Expressfree version和'必須擁有'),它提供了一種更改項目範圍名稱空間的簡單方法。您只需將光標放在要更改的名稱空間上,它將在namespace字符串下顯示一個smart tag(一個藍色小框)。您可以單擊該框或按Ctrl + .鍵查看Rename選項。選擇它,然後輸入項目範圍名稱空間的新名稱,單擊Apply,然後選擇您想要更改的項目中的哪些位置,在新對話框中,然後在OK中選擇。完成! :-)

+0

以我的經驗CodeRush Express不是'必須擁有'(個人意見)。這對於這樣的事情很方便。 – Maarten

1

我已經通過名爲BareGrep的工具瀏覽了文件夾結構,以確保我獲得了所有的名稱空間更改。它是一個免費的工具,可以讓你搜索指定文件結構中的文件。

+0

文件匹配REGEX:**(。exe)|(.dll)|(.cache)|(.pdb)** _然後反轉match_。重複此模式以排除其他二進制等。 – twobob

1

Ctrl + Shift + H不是真正的解決方案。

您可以使用Resharper更改解決方案中的所有命名空間定義。這是我以前嘗試過的最好的方式。

https://www.jetbrains.com/resharper/features/code_refactoring.html

+0

resharper需要全面昂貴的桌面機 –

+0

@IvanG。好吧,許多商業項目也需要成本高昂的開發人員,所以機器和R#許可證在宏偉的方案中不會太昂貴;)如果您需要檢查此(或Adam或Amy's)方法是否正常工作,你可以看看[查找代碼問題](https://www.jetbrains.com/resharper/features/code_analysis.html#Find_Code_Issues) – StuartLC

+0

@StuartLC不幸的是,一個專門的工作場所和大桌面的日子已經過去了,我用了真正強大的筆記本電腦爲我的發展,並resharper幾乎殺死它,所以我不會推薦給任何重視時間的人。 –

14

只需右鍵單擊該解決方案,進入屬性,改變「默認命名空間」下的「應用程序」部分。

enter image description here

+0

謝謝,這是做這項工作最安全和最簡單的方法 –

0

我什麼都試過,但我發現了一個解決方案,它確實有效。它使用新的命名空間名稱等創建獨立的解決方案。

  1. 在主窗體中查找命名空間名稱 - >右鍵單擊 - >重構 - >重命名並選擇一個新名稱。選中所有框,然後單擊確定。

  2. 在解決方案資源管理器中將解決方案名稱重命名爲新名稱。

  3. 在解決方案資源管理器中,將項目名稱重命名爲新名稱。

  4. 關閉VS並將解決方案文件夾中的文件夾(例如總指揮官)重命名爲新名稱。

  5. 在.sln文件中將舊名稱重命名爲新名稱。

  6. 刪除舊文件名爲.suo(隱藏)

  7. 啓動VS和負載項目

  8. 項目 - >屬性 - >變化大會名稱和默認命名爲一個新名稱。

+2

我認爲你應該提到這是一個ReSharper功能.. –