Иногда проект C# будет иметь пользовательский элемент управления, принадлежащий другому проекту C#, и мне придется его переместить. Попытка просто скопировать + вставить этот пользовательский контроль над результатами в пространствах ошибок. Предположим, что проект 1 имеет пространство имен namespace General.Category1.Controls
, а проект 2 имеет пространство имен namespace General.Category2.Controls
.Копирование элемента управления пользователя из одного проекта в другой в пределах одного решения
шаги я изначально принял являлись:
1) Copy + контроль пасты (который включает в себя .cs
, designer.cs
и .resx
файлы) из проекта 1 проекта 2
2) Изменить пространство имен для проект 2's 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) Изменить заявление, чтобы соответствовать новому пространству имен General.Category2.controls
аки private General.Category2.Controls UserControl userControl1;
Я запутался, почему designer.cs
файлы бы не обновляется, что так как обычно не рекомендуется редактировать файлы designer.cs
. Но опять же, возможно, это нормально изменить их, если вы не трогаете метод InitializeComponent()
, поскольку он указывает в самом фактическом файле.
В заключение, почему все designer.cs
не обновляются автоматически? Является ли фактический ответ знать, где этот элемент управления используется, и обновлять декларации самостоятельно, как я это сделал?
[EDIT]: первые 2 шага предназначены для самого управления (это .cs
и .designer.cs
файлов). Третий шаг связан с любыми формами, в которых элемент управления был помещен, прежде чем копировать его, потому что он все еще использует старое пространство имен, поэтому все файлы формы .designer.cs
также должны быть изменены.
как вы ссылаетесь на пользовательские элементы управления - это приложение для веб-приложений или Windows.? в этом веб-приложении вы можете показать, как вы ссылаетесь на него в файле .aspx ..? – MethodMan
вместо того, чтобы копировать и вставлять их повторно, почему бы вам не создать проект библиотеки управления и ссылку? – Muckeypuck
@MethodMan Это приложение для Windows. – McRealz