Visual studio designer in x64 doesn't work
在Visual Studio 2010 64位中,我无法设计窗体。我一直收到这个警告(和错误):
1 2 3 | Warning 18 The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: MainForm --- The base class 'Blah' could not be loaded. Ensure the assembly has been referenced and that all projects have been built. |
这只在我为x64编译时发生…在x86中,设计师工作得很好。
我只想明确一点,我需要这个项目在x64上工作,因为很多项目的组件是在x64中编译的,如果表单是在x86中,那么这些组件将无法工作。
是否有其他人遇到这种情况并找到了解决方案?
我可以通过创建一个带有用户控件的WPF应用程序(将用户控件放在WPF应用程序上,并构建x64)来重新处理您的问题。
我猜是怎么回事:Visual Studio是一个32位应用程序,WPF设计器必须加载引用的程序集(在使用用户控件时,您会一直看到这种行为,在该控件中,必须重新生成才能使设计器更新)。Windows不支持32位和64位之间的"thunk"——您必须是32位应用程序或64位应用程序,句点,不共享。
由于hte wpf设计器是32位的,所以程序集必须是32位的。
以下是一个可能的解决方案:使用"任意CPU"选项设计应用程序。这将导致代码在32位平台上JIT为32位,在64位平台上JIT为64位。
- 设计器将在"任何CPU"中工作,因为程序集将被抖动到32位。
- 当需要专门调试64位时,将构建配置切换到64位(知道必须切换回"32位"或"任意CPU"进行表单设计)
这是VS2008和VS2010中的一个错误。
这是错误报告:
http://connect.microsoft.com/VisualStudio/feedback/details/646328/the-designer-could-not-be-shown-with-platform-x64
似乎还没有办法解决这个问题。
来自Microsoft的建议解决方案是将基类移动到使用anycpu或x86编译的单独程序集(如果实际项目必须是x64)。
不幸的是,这适用于所有的基类:如果您的继承是
当然,这也适用于用户控件!我希望在我们的团队决定移到64位之前我就知道这一点——当更改编译选项的时候会有一个很好的通知,微软……
这两个来自微软的链接正好解释了这个问题:我继续他们:这是一个限制,因为它没有一个x64版本的VisualStudio。
http://connect.microsoft.com/VisualStudio/feedback/details/583872/windows-forms-designer-cant-design-form-inherited-from-form-in-x64-assembly
http://support.microsoft.com/kb/967050