【问题标题】:Visual Studio Designer fails to loadVisual Studio 设计器无法加载
【发布时间】:2014-05-23 08:08:06
【问题描述】:

在我的应用程序中,我使用 ScintillaNET DLL 并创建了一个名为 BufferedScintilla 的类,我在其中继承了控件并对其进行双缓冲。没有什么不寻常的,只是正常的 C# 继承......然后,我修改了表单的 Designer.cs 文件并从使用 ScintillaNET.Scintilla() 切换到 BufferedScintilla()。

应用程序按预期加载并正常工作,但 Visual Studio 2013 设计器无法加载,告诉我“无法将 BufferedScintilla 类型的对象转换为 ScintillaNET.Scintilla 类型。 我尝试了一切,清理了解决方案并重建,仅重建,调试,关闭并重新启动 Visual Studio,甚至重新启动 PC,但没有任何帮助...... Visual Studio Designer 拒绝让我设计我的表单。

再次,应用程序运行良好,我确信表单上的控件是新的 BufferedScintilla,而不是 ScintillaNET.Scintilla,因为我可以看到效果(它是双缓冲的,我正在绘制的自定义图形不再闪烁),所以我 100% 确定应用程序与继承的组件一起运行。

我确信这是 Visual Studio 的某种小缺陷,所以我正在寻找一种解决方案,让它让我再次设计我的应用程序。

编辑:澄清一下,同样的事情也发生在 Visual Studio 2013 Update 1 和 Visual Studio 2010 中。我检查了程序集,它是作为 Any CPU 构建的,所以 Visual Studio 设计器应该没有问题...

编辑:由于似乎无法解决这个问题(某种错误),我期待在构建项目之前自动替换 Designer.cs 文件中的行,然后在项目之后已建成(或未建成)。是否有任何 Visual Studio 工具会在构建项目之前和构建之后按下 Build 按钮后自动替换类中的某些文本?我想替换构造函数和声明,以便在设计时它是 ScintillaNET.Scintilla,而在运行时它是 BufferedScintilla。谢谢!

提前致谢!

有效

【问题讨论】:

  • 您可能需要考虑的事情,Visual Studio 是一个 32 位进程。如果您将任何包含表单组件的库构建为 64 位库,Visual Studio 将无法加载它们并在设计器中使用它们。一切都会编译得很好,您将能够引用 64 位库,只是不要在设计器中使用它们。
  • 是的,我也考虑过。不幸的是,这不是这里的问题......

标签: c# casting visual-studio-2013 designer scintilla


【解决方案1】:

我遇到了一个与此非常相似的问题,在我的情况下,设计器仍然使用为控件和表单设置的构造函数和加载的事件。在我的例子中,我使用了一个在设计时从未设置过的变量,所以要解决这个问题,你必须修改你的代码来做这样的事情......

if(this.DesignMode)
{
    //DoSomething();
}
else
{
    //DoSomethingElse();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 1970-01-01
    • 2011-01-14
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多