我有一个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);
    }
}

在上面的代码中,IPortalPageIChannelRequest是Modus.Core中定义的接口(interface)。

我的意图是在我的代码中使用此控件,如下所示:
<tnl:PortalLinkNew ID="CancelButton" runat="server" Text="Cancel" OnInit="CancelButton_Init" />

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



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

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

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

最佳答案

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

现在我可以添加的是

a)“有时”(我无法确定确切的时间)“转换为Web应用程序”技巧对我有用(但并非总是如此)

b)“有时”(与上面相同)有助于切换到设计器 View ,进行某些更改并保存-> * .designer.cs被重新生成

在将控件添加到页面中之后,我通常会以不固定的顺序尝试几件事,直到“某事”起作用为止。

互联网上对此有很多杂音,但我还没有找到“真正的解决方案”(尚未)。除了已经提到的内容外,我读到的一件事是它可能与(不匹配/不存在) namespace 有关。

当我检查我的应用程序时,*。cs文件中确实没有namespace声明。因此,我添加了它们(在* .cs和* .aspx中),并有一段时间认为它可以解决问题。但可悲的是,我现在知道事实并非如此……

关于asp.net - 设计器文件的生成失败: Could not load file or assembly,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2548254/

10-13 06:10