Visual studio 2013 Winforms应用程序能否使用表单设计器并访问SharePoint服务器端对象模型

Visual studio 2013 Winforms应用程序能否使用表单设计器并访问SharePoint服务器端对象模型,visual-studio-2013,user-controls,64-bit,sharepoint-2013,windows-forms-designer,Visual Studio 2013,User Controls,64 Bit,Sharepoint 2013,Windows Forms Designer,我正在开发一个Windows窗体应用程序,它需要访问和操作SharePoint 2013网站集,最好是通过服务器端对象模型SSOM。我似乎遇到了一个与这个问题类似的问题 我无法在x86或AnyCPU中运行SSOM代码,当我在编译到x64后尝试在forms designer中使用用户控件打开表单时,会出现以下错误: 找不到类型“[UserControl]”。请确保引用了包含此类型的程序集。如果此类型是开发项目的一部分,请确保已使用当前平台或任何CPU的设置成功构建该项目 看起来UserContro

我正在开发一个Windows窗体应用程序,它需要访问和操作SharePoint 2013网站集,最好是通过服务器端对象模型SSOM。我似乎遇到了一个与这个问题类似的问题

我无法在x86或AnyCPU中运行SSOM代码,当我在编译到x64后尝试在forms designer中使用用户控件打开表单时,会出现以下错误:

找不到类型“[UserControl]”。请确保引用了包含此类型的程序集。如果此类型是开发项目的一部分,请确保已使用当前平台或任何CPU的设置成功构建该项目

看起来UserControls正在编译到x64中,但设计器无法呈现,我想它是在x86中运行的。这些用户控件都在同一个项目中,将整个项目重新编译为x86允许表单设计器呈现


每次我想在表单设计和与SharePoint交互之间切换时,是否是我唯一可以完全重建整个代码库的选项?

除非Hans Passant出现并声称他在评论线程中给出的答案,否则我将发布我对该问题的解决方案:

解决方案 确保64位目标窗体/项目中使用的任何用户控件都位于单独的项目中,该项目将编译为以AnyCPU为目标,然后重新生成并引用该项目


当运行为x86的forms designer尝试加载用户控件进行渲染时,它将以x86的形式运行控件,但当您构建并运行64位项目时,引用将来自x64进程,因此将以x64的形式运行控件。

if!this.DesignMode{/*SSOM代码…*/}@HansPassant-我可以。。。试试看,但我不认为问题在于SSOM在设计时运行,它只在表单加载和某些事件处理程序中被引用-这是因为UserControls被编译为不同于IDE的位,所以当设计器在InitializeComponent函数中调用它们时,它们与IDE的Bitness不兼容用户控件以x64为目标的目的是什么?只有EXE项目的平台目标设置才重要。任何其他项目都应该选择AnyCPU。因此,作为一个例子,它们仍然可以在设计器中正常工作。@HansPassant-它们都在同一个项目中-我想我可以尝试将控件放在不同的项目中-我认为它不够复杂,不足以证明不止一个,但如果这可以解决我的问题,那么这就足够了。我试试看,有点不对劲。我的水晶球显示您正在更改解决方案平台设置。那是错的。项目>属性>构建选项卡,平台目标=AnyCPU,首选32位=off。在发布版本中再次执行此操作。