在使用Visual Studio 2010创建控制台程序或者Windows窗体应用程序时,很多同学可能都遇见过一种情况:添加对Microsoft.Xrm.Sdk.dll以及Microsoft.Crm.Sdk.Proxy.dll引用没有问题,编写代码也有上下文感知。如下图所示
但是,只要执行“生成解决方案”命令,Visual Studio就会抛出很多的编译错误,包括
- 命名空间“Microsoft”中不存在类型或命名空间名称“Crm”。是否缺少程序集引用?
- 命名空间“Microsoft”中不存在类型或命名空间名称“Xrm”。是否缺少程序集引用?
- 未能找到类型或命名空间名称“IOrganizationService”(是否缺少 using 指令或程序集引用?)
等等错误,效果如下图所示,
明明引用成功了,代码编写也没有问题,为什么就报错了呢?Visual Studio出问题了吧,好吧,我重启一下Visual Studio看一下。很不幸,错误依旧,并非是Visual Studio出现了问题。
问题在哪里呢?
打开当前项目的属性页,可以看到,在“应用程序”页签的“目标框架”中,当前项目的“目标框架”是“.Net Framework 4 Client Profile”,如下图所示。
把目标框架切换为“.Net Framework 4”,Visual Studio会提示目标Framework进行修改的对话框,如下图所示。
点击“是”,重新生成解决方案,OK,错误没有了。程序也可以运行了。
究其原因,Visual Studio产品组为了程序的部署方面的考虑,特别创建了.Net Framework 4 Client Profile,该框架是.Net Framework 4的一个简化版。可惜,在开发CRM的应用程序的时候,其目标框架必须是.Net Framework 4,所以出现了本文中描述的问题。