如何:设置正确的目标框架和 CPU
上次修改时间: 2010年4月30日
适用范围: SharePoint Foundation 2010
本主题介绍如何在 Microsoft Visual Studio 中为 Microsoft SharePoint Foundation 开发项目设置正确的目标 Microsoft .NET Framework 和正确的目标 CPU 平台。
目标设置规则
设置目标 Microsoft .NET Framework 和 CPU 平台的规则如下:
面向 SharePoint Foundation 的客户端或服务器对象模型开发的所有 Visual Studio 项目必须将 Microsoft .NET Framework 3.5 设置为目标框架。即使 Visual Studio 项目类型不是"SharePoint 2010"项目类型之一,此规则也适用。
面向 SharePoint Foundation 的服务器对象模型开发的所有 Visual Studio 项目以及任何"SharePoint 2010"项目类型必须将"x64"或者"任何 CPU"作为目标 CPU 平台。这两种选择各有利弊。
"x64"是更准确的选择,因为面向 SharePoint Foundation 服务器对象模型开发的解决方案不能 面向"任何"CPU。然而,若要将"x64"设置为目标,则必须对面向"x64"的每个 Visual Studio 解决方案重复启用 x64 作为 CPU 平台目标过程(在本主题的下文中提供)。此外,因为一些经常调用的 Microsoft 程序集(如 System.Data.dll 和 mscorlib.dll)本身是针对"任何 CPU"编译的,所以您可能会收到编译器警告(不是错误),提示您引用的程序集面向其他处理器。
"任何 CPU"是最简单的选择,因为它始终作为选项提供并且无需特殊过程即可启用。然而,它会在一定程度上产生误导,因为它似乎暗示生成的程序集可以在 x86 计算机上使用,但事实并非如此。此外,针对"任何 CPU"生成的程序集可能要比针对"x64"生成的程序集占用更多的磁盘空间。
警告 将面向服务器对象模型的项目设置为"x86"CPU 平台目标通常不会生成编译器错误。但是您将遇到运行时错误和异常运行时行为。例如,获取对 SharePoint Foundation SPFarm 对象的引用的代码返回 null,获取对子对象(如 Web 应用程序)的引用的代码将引发 FileNotFoundException。
面向客户端对象模型开发的 Visual Studio 项目通常应该将"任何 CPU"设置为目标 CPU 平台,因为您通常希望客户端应用程序在 x86 和 x64 计算机上运行。然而,如果应用程序仅在一种类型的客户端计算机上运行,请指定"x86"或"x64"。若要将"x64"设置为目标,需要执行本主题下文提供的过程启用 x64 作为 CPU 平台目标中列出的步骤。
一个 Visual Studio 解决方案可以包含多个项目;在同一解决方案中,可以同时包含"SharePoint 2010"项目类型的项目和非"SharePoint 2010"项目类型的其他项目。如果"SharePoint 2010"项目引用另一类型的项目或反之,则它们必须具有相同的目标 CPU 平台。例如,如果您的解决方案是在 SharePoint Foundation 服务器上运行的控制台应用程序,则可能要利用"SharePoint 2010"项目类型的自动部署和收回功能。在这种情况下,Visual Studio 解决方案可以包含一个"空白 SharePoint 项目"和一个"控制台应用程序"项目。可以使用"包属性"窗口的"高级"选项卡的"添加其他程序集"功能将控制台应用程序的可执行文件添加到 SharePoint 项目的包中。添加"控制台应用程序"项目时,它默认情况下将"x86"作为目标 CPU 平台,但是"空白 SharePoint 项目"(与所有"SharePoint 2010"项目类型一样)默认情况下将"任何 CPU"作为目标 CPU 平台。将可执行文件添加到包后,您将遇到编译器错误,直到将两个项目设置为相同的目标 CPU 平台。必须将控制台应用程序更改为面向"任何 CPU",或者将两个项目更改为面向"x64"。
启用 x64 作为 CPU 平台目标
创建项目后,在 Visual Studio 工具栏上,打开"解决方案平台"下拉列表框。
单击"配置管理器"。
在"配置管理器"对话框中,打开"活动解决方案平台"下拉列表框并单击"<新建> …"。
在"新建解决方案平台"对话框的"键入或选择新平台"下拉列表框中,选择"x64"。
在"从此处复制设置"下拉列表框中选择"x86"。
单击"确定"。
在"配置管理器"对话框中,确保"生成"列中与解决方案内的所有项目对应的框均处于选中状态。
单击"关闭"。