2011-06-06 76 views
2

我正在尝试将插件添加到CRM2011服务器。按照sdk的Plug-in Sample的步骤,一切都按预期工作。然而,当我试图将插件注册到磁盘(默认是数据库),我得到了Dynamics CRM 2011无法将插件注册到磁盘

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Unable to load plug-in assembly. 

似乎是服务器找不到microsoft.xrm.sdk文件。但为什么在发布到数据库时相同的设置工作正常?

我已经为文件夹C:\ program files \ MicrosoftDynamics CRM \ Server \ bin添加了“写入”权限给用户“网络服务”,但得到了相同的错误信息。

服务器操作系统是Windows 2008 R2在vmware播放器虚拟机中运行。

+0

我在http://social.microsoft.com/Forums/en/crmdevelopment/thread/5389fb9d-04ee-4a00-b7f5-48dc37a4e155上提过这个问题,希望能从微软内部人士那里得到一些反馈。 – 2011-06-06 19:41:58

回答

5

我已经从微软论坛得到了答案。原来,我需要手动将DLL复制到CRM服务器下CRMINSTLLDIR /服务器/斌/组装,然后我可以从我的客户端机器注册。

现在我知道这个概念,但仍然认为它是非直观的。微软以这种方式设计插件注册流程是否有任何理由?安全?

+0

)我们有同样的问题,我们最终做了你所做的,我不确定他们为什么这样做,我们只是坚持在开发过程中将其放入数据库(每次上传DLL时间是一种痛苦)。 – ryanjones 2011-06-09 18:04:26

0

如果您尝试添加完全访问bin文件夹的组“Everyone”,您是否仍然收到错误?

+0

现在我添加了所有人完全控制。仍然得到相同的错误:( – 2011-06-06 17:16:14

0

一旦做出选择,似乎一直在向CRM数据库中注册.dll,因此,之后无法再开始使用程序集文件夹(磁盘)。

我一直在使用磁盘进行排序,因此只能在生产环境中快速更新程序集并仅使用数据库选项。

0

如果你真的要部署到磁盘试试这个:

  1. 的[...]/server/bin目录/装配与读取文件夹创建一个共享/写的只是开发商。或者,如果开发者在服务器上拥有管理员权限,则可以跳过此步骤并仅使用管理员共享。例如: \服务器名\ C $ \ Program Files文件\ Microsoft动态CRM \ server \ bin添加\装配

  2. 在Visual Studio中,项目/属性菜单选项下,在后期生成事件命令行箱,添加一个命令来复制您的.dll(如果调试,则为.pdb)。复制命令应包括无论是在上一步中创建的共享名称,或使用admin $

而且,看看编辑后生成按钮下的可用宏的路径。你会发现像$(TargetFileName)这样的有用位来抽象实际的文件和文件夹名称。

现在,每次构建时,文件都会自动复制到服务器。

尽管我将我的插件注册到数据库,但我始终都使用此方法。如果你想做任何远程调试,你将需要服务器上的程序集文件夹中的.dll和.pdb文件。