C #, .NET 2.0
У меня есть веб-сайт ASP.NET в решении с 2 другими проектами (используется в качестве ссылок на библиотеку). Когда я собираю (отлаживаю или выпускаю) в Visual Studio, все работает нормально. Однако сборка с MSBuild завершается неудачей.
Эта сборка работала (на самом деле она вызывается с помощью задачи nAnt). Единственное, что изменилось, - это то, что у меня есть новый пользовательский элемент управления, на тип которого я ссылаюсь в своем коде.
Код ошибки в моем ASPX-коде. MessageAlert - это пользовательский контроль:
MessageAlert userControl = this.LoadControl("~/UserControls/MessageAlert.ascx") as MessageAlert;
userControl.UserMessage = message;
this.UserMessages.Controls.Add(userControl);
Чтобы Visual Studio мог распознать тип 'MessageAlert', мне нужно было:
1) Установите ClassName = "MessageAlert" в разметке @Control в верхней части пользовательского элемента управления (поскольку использование автоматически сгенерированного UserControls_MessageAlert также не работает)
2) Зарегистрируйте пользовательский элемент управления в разметке моего ASPX, используя @ Register
3) Добавьте «использование ASP» в начало моего кода позади
После этих шагов я мог успешно ссылаться на тип MessageAlert в моем коде из Visual Studio. Но из MSBuild я получаю «Не удалось найти тип или имя пространства имен« MessageAlert »(отсутствует директива using или ссылка на сборку?)»
Выполнение MSBuild очень просто - оно указывает на тот же файл решения и устанавливает свойство конфигурации для освобождения.
Кажется, исходя из количества шагов, которые мне пришлось пройти, чтобы получить ссылки на Type для MessageAlert в Visual Studio, что-то не хватает в процессе MSBuild. Но что? Разве Visual Studio фактически не вызывает MSBuild за кулисами?
Есть ли лучший способ ссылаться на тип UserControl в коде за ASPX?
РЕДАКТИРОВАТЬ: Чтобы уточнить, пользовательский элемент управления MessageAlert является не в других ссылочных сборок / проектов. Я упомянул их, потому что вместе с веб-сайтом составляет файл Solution, который является тем же файлом sln, который создается MS Build.