C# Visual Studio设计器无法加载

C# Visual Studio设计器无法加载,c#,casting,visual-studio-2013,designer,scintilla,C#,Casting,Visual Studio 2013,Designer,Scintilla,在我的应用程序中,我使用闪烁DLL并创建了一个名为BufferedScancilla的类,我在其中继承控件并对其进行双缓冲。没什么不寻常的,只是正常的C#遗传。。。然后,我修改了表单的Designer.cs文件,并从使用闪烁体net.闪烁体()切换到Buffered闪烁体() 该应用程序按预期加载并正常工作,但Visual Studio 2013 designer未能加载,告诉我“无法将BufferedScancilla类型的对象强制转换为ScancillNet.Scancilla类型。 我尝试

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

该应用程序按预期加载并正常工作,但Visual Studio 2013 designer未能加载,告诉我“无法将BufferedScancilla类型的对象强制转换为ScancillNet.Scancilla类型。 我尝试了一切,清理解决方案并重建、仅重建、调试、关闭和重新启动Visual Studio,甚至重新启动PC,但毫无帮助……Visual Studio Designer拒绝让我设计表单

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

我确信这是VisualStudio的一个小缺陷,所以我正在寻找一个解决方案,让我重新设计我的应用程序

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

EDIT:由于似乎无法修复这一问题(某种缺陷),我正在寻找一种方法,在构建项目之前,自动替换Designer.cs文件中的行,然后在构建项目之后(或不构建项目之后)。是否有任何Visual Studio工具可以在项目生成之前和生成之后按Build按钮自动替换类中的某些文本?我想替换构造函数和声明,以便在设计时它是闪烁体。闪烁体,在运行时它是Buffered闪烁体。谢谢!

提前谢谢


Vali

我遇到了一个与此非常类似的问题,在我的例子中,设计器仍然使用为控件和窗体设置的构造函数和加载的事件。在我的例子中,我使用的变量在设计期间从未设置过,因此要解决这个问题,您必须修改代码来执行类似的操作

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

您可能需要考虑的是,VisualStudio是一个32位的过程。如果您构建包含64位库的窗体组件的任何库,VisualStudio将无法加载它们并在设计器中使用它们。任何事情都会编译得很好,您可以引用64位库,而不必在设计器中使用它们。叶s、 我也考虑过这一点。不幸的是,这不是问题所在。。。