生成设计器文件失败:无法加载文件或程序集

Str*_*ior 6 asp.net visual-studio-2008

我有一个ASP.NET Web应用程序项目,它引用了另一个名为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);
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码,IPortalPage并且IChannelRequest是在Modus.Core定义的接口.

我的意图是在我的代码中使用此控件,如下所示:

<tnl:PortalLinkNew ID="CancelButton" runat="server" Text="Cancel" OnInit="CancelButton_Init" />
Run Code Online (Sandbox Code Playgroud)

这实际上编译并运行没有问题,但是当我在Visual Studio 2008中编辑页面(源视图)时,我收到以下警告:

生成设计器文件失败:无法加载文件或程序集"Modus.Core,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null"或其依赖项之一.该系统找不到指定的文件.

正如它所说,它不会重新生成设计器文件,这意味着CancelButton在代码隐藏中引用控件的任何尝试都会导致编译器错误.根据我在网上找到的建议,我尝试删除相应的.ascx.designer.cs文件并在该页面上使用"转换为Web应用程序",但它告诉我它无法重建设计器文件,原因与提到的相同以上.

我已经尝试了我能想到的一切:清理解决方案,重新启动Visual Studio,重新启动计算机,删除代码目录并从存储库中提取新内容,删除并重新添加项目和dll引用等.同样的问题发生在我使用的多台计算机上.

如何让VS设计师停止失败?

sch*_*and 18

我有一个非常类似的问题(我还没解决).我遇到问题的应用程序是从"网站项目"转换而来的,我无法摆脱这与它有关的感觉.我在VS 2005上.

现在我可以补充的是

a)"有时"(我还不知道到底是什么时候)"转换为Web应用程序"-trick对我有效(但并非总是如此)

b)"有时"(与上面相同)它有助于切换到设计器视图,更改内容并保存 - >*.designer.cs重新生成

在将"控件"添加到页面后,我通常会尝试几个没有修复顺序的东西,直到"某些东西"起作用.

在互联网上有很多关于这个的噪音,但我找不到它的"真正修复"(还).除了已经提到的以外,我读到的一件事是它可能与(不匹配/不存在)命名空间有关.

当我检查我的应用程序namespace时,*.cs文件中确实没有声明.所以我添加了它们(在*.cs和*.aspx中),并且有一段时间以为它做到了.但遗憾的是,现在我知道事实并非如此......


cbp*_*cbp 14

我的解决方案

  1. 关闭并重新打开Visual Studio.
  2. 你的问题解决了吗?如果没有,请转到1.

  • Resharper告诉我你的算法中存在潜在的无限循环.;-) (6认同)

Eur*_*lli 5

为@ scherand(a)和(b)失败时添加第三个选项:

c)"有时",这也有效:

  • 删除<%@ Register... %>条目
  • 保存.AS?X文件.让设计师抱怨.
  • <%@ Register... %>再次添加
  • 再次保存

[2010年10月13日添加]:
d)"有时",以及:

  • 除了最基本的内容之外,清除AS?X文件.
  • 开始添加一块,一点一点.
  • 保存.
  • 检查您是否收到错误消息.
  • 再加几件.冲洗.重复.

为此,我使用文本比较工具来备份AS?X文件的备份副本.

我尽量避免添加导致错误的控件直到最后.我也尝试从页面底部添加.但是,我不知道有什么严厉的规定.这是一种直觉感觉.

(有人会想出这个吗?)