Ответ 1
Что делает дизайнер, все в порядке.
- > У вас в вашем проекте есть пространство имен, называемое MyProject.MyProject
.
(Попробуйте найти его в "Class View" )
У меня проблема (очевидно, вопрос:)
У меня есть проект MyProject... поэтому остальная часть проекта использует по умолчанию любые классы в качестве пространства имен "MyProject"... без проблем.
В моем проекте я создал пользовательский элемент управления, на котором есть много других элементов управления (ярлык, текстовые поля и т.д.). Итак, этот класс ТАКЖЕ находится в пространстве имен по умолчанию "MyProject". Все компиляции не проблема. Чтобы подтвердить видимость области видимости, в этом пользовательском элементе управления я убедился, что код DESIGNER и Code-Behind (My code) являются ОБО Внутри одного и того же пространства имен MyProject (они есть), И они оба соответственно являются PUBLIC PARTIAL CLASS MyUserControl.
Теперь проблема. Я создаю простую форму (также в пространстве имен "MyProject" по умолчанию). Из панели инструментов существует "MyUserControl", поэтому я перетаскиваю его в MyNewForm. Перетаскивание в порядке.
Сохранить все, скомпилировать, сбой... Дизайнер добавляет дополнительную ссылку "MyProject", тем самым создавая впечатление, что пользовательский элемент управления фактически находится в MyProject.MyProject.MyUserControl.. вместо MyProject.MyUserControl.
Как только я вручную удалю дополнительный "MyProject.", сохраните и скомпилируйте, все в порядке. Однако, если я повторно отредактирую форму, измените что-то, M $изменит ее обратно на исходную ссылку "MyProject.MyUserControl".
Все, что сказано, вот фрагменты из моего проекта...
namespace MyProject
{
partial class MyNewForm
{
...
private void InitializeComponent()
{
// THIS is the line that has the extra "MyProject." reference
// when I manually remove it, all works perfectly
this.MyUserControl1 = new MyProject.MyUserControl();
}
}
private MyUserControl MyUserControl1;
}
Затем в определении MyUserControl у меня есть...
namespace MyProject
{
public partial class MyUserControl : UserControl
...
}
и из MyUserControl через конструктор...
namespace MyProject
{
public partial class MyUserControl : UserControl
...
}
Спасибо за помощь...
Что делает дизайнер, все в порядке.
- > У вас в вашем проекте есть пространство имен, называемое MyProject.MyProject
.
(Попробуйте найти его в "Class View" )
PS. любому, кто имеет такую же проблему, но не нашел решения...
Предполагая, что вы создали новую WindowsFormApplication;
- Ошибка: имя типа 'userControlName' не существует в типе 'projectName.FormName'
У меня были исследования в сети для любого решения, но я не мог ответить на любой вопрос...
Но если вы измените имя формы, любое другое, отличное от имени проекта, оно будет разрешено.
Если вы настаиваете на том, что имя формы и имя проекта должны быть одинаковыми в зависимости от потребностей вашего проекта, можно создать пользовательскую DLL и использовать в нем пользовательский контроль.
Затем, чтобы использовать в качестве элемента управления, добавьте DLL файл в "ToolBox", используя "Выбрать элементы..."
Наконец, он будет готов к использованию.
PS2. борясь с той же проблемой в течение нескольких часов, это решение, которое я нашел.
Имя пространства имен и имя класса должны быть разными. Код, сгенерированный добавлением WCF, автоматически ссылается на пространство имен, но если имя класса совпадает с именем пространства имен, сгенерированный код просматривает класс и ничего не будет компилироваться.
Название элемента управления пользователя и формы совпадают. Использование разных имен решит проблему.
Поскольку это был лучший результат поиска, когда у меня была эта ошибка, просто хочу опубликовать мою причину и решение.
Проблема заключалась в том, что я не добавил второй класс "помощник" в качестве ссылки в обоих проектах.
Таким образом, у другого проекта был обновленный "общий" класс, но он не знал о классе "помощника", который он теперь использовал.
Примечание для себя: обратите больше внимания на столбец проекта списка ошибок:)
Просто столкнулся с этим, когда у меня была MasterPage с явным
<%@ Import Namespace="MyNamespace" %>
в файле .master
Это также происходит, когда вы используете разные страницы, но с тем же именем. В моем случае я создал набор данных "Grants.xsd" и страницу "Grants.aspx". Как-то они попали в конфликт, в результате чего эта ошибка.
Вы можете легко устранить эту проблему, наведя курсор на ключевое слово Culprit (имя класса) и в Visual Studio 2013, оно сообщит вам, где именно находится конфликт.