Visual Studio设计器加载失败

本文关键字:加载 失败 Studio Visual | 更新日期: 2023-09-27 17:57:36

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

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

同样,该应用程序运行FINE,我确信表单上的控件是新的BufferedScintilla,而不是ScintillaNET。闪烁,因为我可以看到效果(它是双缓冲的,我在上面绘制的自定义图形不再闪烁),所以我100%确信该应用程序使用继承的组件运行。

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

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

EDIT:由于似乎不可能修复这个问题(某种错误),我正在寻找一种在构建项目之前自动替换Designer.cs文件中的行的方法,然后在项目构建(或不构建)之后自动替换。有没有Visual Studio工具可以在项目生成之前和生成之后,在按下"生成"按钮后自动替换类中的某些文本?我想替换构造函数和声明,这样在设计时它就是ScintillaNET。Scintilla,在运行时它是BufferedScintilla。谢谢

提前感谢!

Vali

Visual Studio设计器加载失败

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

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