C #, .NET 2.0
У меня есть веб-сайт ASP.NET в решении с двумя другими проектами (используются в качестве ссылок на библиотеки). Когда я создаю (отлаживаю или выпускаю) в Visual Studio, все работает нормально. Однако сборка с помощью MSBuild не выполняется.
Эта сборка была работала (на самом деле она вызывается через задачу nAnt). Единственное, что изменилось, это то, что у меня появился новый пользовательский элемент управления, на тип которого я ссылаюсь в своем коде.
Оскорбительный код находится в моем коде ASPX. MessageAlert - это UserControl:
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) Добавьте "using ASP" в начало моего кода позади
После этих шагов я мог успешно ссылаться на тип MessageAlert в моем коде из Visual Studio. Но из MSBuild я получаю «Не удалось найти тип или имя пространства имен MessageAlert (вам не хватает директивы using или ссылки на сборку?)»
Выполнение MSBuild очень простое - он указывает на тот же самый файл решения и устанавливает для свойства конфигурации значение release.
Судя по количеству шагов, которые мне пришлось пройти, чтобы получить ссылки типа на MessageAlert в Visual Studio, кажется, что в процессе MSBuild чего-то не хватает. Но что? Фактически, Visual Studio не вызывает MSBuild за кулисами?
Есть ли лучший способ ссылаться на тип UserControl в коде ASPX?
РЕДАКТИРОВАТЬ: Чтобы уточнить, пользовательский элемент управления MessageAlert отсутствует в других сборках / проектах, на которые имеются ссылки. Я упомянул их, потому что вместе с веб-сайтом создается файл решения, который представляет собой тот же файл sln, который создается MS Build.