2016-01-27 94 views
0

有時,C#項目將在它屬於另一個C#項目中的用戶控件,我將不得不將其移動。試圖簡單地將該用戶控件複製粘貼到命名空間錯誤的結果上。假設項目1的命名空間爲namespace General.Category1.Controls,項目2的命名空間爲namespace General.Category2.Controls複製用戶控制

的步驟我最初採取是:

1)複製+粘貼控制(包括.csdesigner.cs.resx文件)項目1到項目2

2)更改命名空間項目2的namespace General.Category2.Controls

在建設時這一點上,我從該副本+粘貼之前,使用此控件的形式獲得了額外的錯誤,狀態'The type of namespace name 'UserControl1' does not exist in namespace 'General.Category1.Controls' (are you missing an assembly reference?)。事實證明,designer.cs表單文件在複製+粘貼後沒有更新到正確的名稱空間。

於是我新增加一個額外的步驟:

3)更改聲明,以配合又名private General.Category2.Controls UserControl userControl1;

我很困惑,爲什麼designer.cs文件不會已經更新的General.Category2.controls新的命名空間因爲通常不建議編輯designer.cs文件。但是,再次,也許可以修改它們,只要你不觸及InitializeComponent()方法,因爲它在實際文件本身中聲明。

總之,爲什麼所有的designer.cs不自動更新?是否知道在何處使用此控件的實際答案,並按照我所做的更新自己的聲明?

[編輯]:前兩步是爲控制本身(它是.cs.designer.cs文件)。第三步是在複製之前將控件置於其中的任何表單,因爲它仍在使用舊的名稱空間,所以必須更改所有.designer.cs文件。

+0

你是如何引用用戶控件是這是一個Web應用程序或Windows應用程序..?在它是一個Web應用程序,你可以顯示你如何在.aspx文件中引用它? – MethodMan

+0

而不是像這樣反覆複製和粘貼它們,爲什麼不製作一個控制庫項目和參考? – Muckeypuck

+0

@MethodMan這是一個Windows應用程序。 – McRealz

回答

0

在那裏!我不使用複製粘貼。 在VS-2017一個的UserControl1可以複製到另一個項目,具體如下:

  • 在Windows中:複製UserControl1.cs,並了.Designer.cs的.resx到您的新項目 目錄
  • 在VS:右鍵單擊您的項目在Solution Explorer中,將其設置爲啓動 項目

  • 在Solution Explorer中右擊新項目,並選擇添加現有我tem

  • 現在,請選擇只有 UserControl1。CS文件中的文件盒

  • 等待,解決方案資源管理器將註冊的其他文件,更改符號
  • 在VS,開放UserControl1.designer.cs ..改變命名空間新項目命名空間
  • 在VS,開放UserControl1.cs,改變命名空間新項目命名空間

這一步後,重建新項目。轉到表單設計並打開工具箱。工具箱將顯示您的UserControl。