【问题标题】:Creating a single CRM plugin DLL to store in the CRM database创建单个 CRM 插件 DLL 以存储在 CRM 数据库中
【发布时间】:2010-10-20 14:41:46
【问题描述】:

由于建议的在 MS CRM 中存储插件的方法是通过 CRM 数据库,我认为是时候对我目前使用的方法做一些事情了,即将 DLL 存储在磁盘上。

但问题是我不知道如何嵌入 DLL 所需的所有其他各种位:本地化资源文件(保存在另一个文件夹中)和来自最新 SDK 的一些引用的 DLL(其中必须手动放置在 bin\assembly 文件夹中)。在这一点上,我什至不完全确定这是可能的。

到目前为止,我已尝试通过将资源文件上的构建操作更改为“内容”或“资源”来解决本地化问题,并测试了此解决方案(仍将位置保留在磁盘上,但没有添加本地化文件夹)。这不起作用:当我故意在其中一个插件中生成验证错误时,尽管在 CRM 中选择了不同的语言,但我收到了默认语言消息(英语)。

在尝试添加一些引用的 DLL 文件(即新的 SDK DLL:xrm.portal、xrm.portal.files 和 xrm.client)时,我遇到了类似的问题。当我尝试将插件存储在数据库中时(暂时跳过本地化问题),我收到一个 CRM 错误,说它找不到 XRM.Client 程序集或其依赖项之一。我知道我可以使用 ILMerge 将整个事情放在一起,但我有一种直觉告诉我这不是一个好主意。

关于这个问题的任何提示或建议都会很棒。

【问题讨论】:

    标签: c# plugins dynamics-crm dynamics-crm-4


    【解决方案1】:

    我们总是 ILMerge 我们的插件并且对此没有任何问题。我们不会合并 SDK dll,因为它们已经在目标服务器上进行了 GAC。

    不过,我们并没有真正在我们的插件 dll 中进行本地化,所以我认为您可能需要做的是,如果您当前的资源管理器是基于文件的,则使其基于程序集并仅从那个。

    【讨论】:

    • 作为后续,NuGet ILMerge 包使这变得更加容易。不再编辑构建后的任务,它只是合并到构建结果中的所有内容中。只需确保将 CRM SDK DLL 标记为不复制到输出文件夹即可。
    【解决方案2】:

    我有一组帮助程序,它们捆绑在一个外部程序集中,用于我的大多数实现。我将把它部署到 bin 文件夹并保留它。我自己从未尝试过 ILMerge,但这似乎是一个有趣的概念。

    【讨论】:

      【解决方案3】:

      只需将 DLL 放入文件夹 CRMWeb\Bin

      【讨论】:

      • 虽然可能,但这是一个糟糕的解决方案。 CRM 4.0(最初为此创建问题)的情况稍差一些,因为扩展可以很好地使用 ISV 文件夹(因此正式部署文件是可以的),这对于任何较新的 CRM 版本来说都非常糟糕。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多