У меня есть проект веб-приложения ASP.NET, который ссылается на другой проект под названием ModusCore (или Modus.Core). До сих пор у нас было множество элементов управления, которые без проблем использовали ModusCore, но в последнее время я создал один, который вызывает проблемы. Вот код:
public class PortalLinkNew : WebControl
{
public string Text { get; set; }
public bool AllowPush { get; set; }
public PortalLinkNew()
{
AllowPush = true;
}
public IChannelRequest ChannelRequest { get; set; }
protected override HtmlTextWriterTag TagKey
{
get { return HtmlTextWriterTag.A; }
}
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
try
{
base.AddAttributesToRender(writer);
if (DesignMode || Page == null || !(Page is IPortalPage))
{
return;
}
string href = "/";
if (ChannelRequest != null)
{
var portalPage = (IPortalPage)Page;
href = portalPage.Module.PortalRouter.GetLinkUrl(portalPage, ChannelRequest, AllowPush);
}
writer.AddAttribute(HtmlTextWriterAttribute.Href, href);
}
catch (Exception)
{
}
}
public override void RenderEndTag(HtmlTextWriter writer)
{
writer.Write(Text);
base.RenderEndTag(writer);
}
}
В приведенном выше коде IPortalPage
и IChannelRequest
являются интерфейсами, определенными в Modus.Core.
Я намерен использовать этот элемент управления в моем коде следующим образом:
<tnl:PortalLinkNew ID="CancelButton" runat="server" Text="Cancel" OnInit="CancelButton_Init" />
Это на самом деле компилируется и запускается без проблем, но когда я редактирую страницу (представление исходного кода) в Visual Studio 2008, я получаю следующее предупреждение:
Генерация файла конструктора не удалась: не удалось загрузить файл или сборку 'Modus.Core, версия = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null' или одна из его зависимостей. Система не может найти указанный файл.
Как говорится, он не регенерирует файл конструктора, что означает, что любая попытка сослаться на элемент управления CancelButton
в коде позади приводит к ошибке компилятора. Следуя совету, который я нашел в Интернете, я попытался удалить соответствующий файл .ascx.designer.cs и использовать «Преобразовать в веб-приложение» на этой странице, но он говорит, что не может перестроить файл конструктора по той же причине, о которой говорилось выше.
Я перепробовал все, что мог придумать: очистить решение, перезапустить Visual Studio, перезагрузить компьютер, удалить каталог кода и извлечь его из репозитория, удалить и повторно добавить ссылки на проект и dll и т. Д. Та же проблема возникает на нескольких компьютерах, которые я использую.
Как заставить конструктор VS перестать работать?