You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在VS中实现依赖项目嵌入主程序集以解决CRM插件加载异常?

解决CRM插件部署后缺失依赖程序集的问题

我明白你的问题了——现在你的Project2插件程序集依赖的Project1没有被正确嵌入,导致CRM加载时找不到它。咱们用ILMerge在Visual Studio 2015里把两个程序集合并成一个,就能解决这个问题,具体步骤如下:

步骤1:给Project2安装ILMerge

首先,我们需要用ILMerge来合并程序集。打开Visual Studio的包管理器控制台,切换到Project2所在的项目,执行以下命令安装ILMerge NuGet包:

Install-Package ILMerge

步骤2:配置Project1的引用属性

在Project2的引用列表里找到Project1,右键点击它选择属性,然后把复制本地设置为False。这一步是告诉VS不要把Project1的DLL单独复制到输出目录,因为我们要把它合并到主程序集里。

步骤3:添加构建后事件

打开Project2的属性窗口,切换到生成事件标签页,在后期生成事件命令行里输入以下命令(注意根据你的实际项目信息调整版本号和路径):

"$(SolutionDir)packages\ILMerge.3.0.41\tools\net452\ILMerge.exe" /out:"$(TargetDir)Merged_$(TargetFileName)" "$(TargetPath)" "$(SolutionDir)Project1\bin\$(ConfigurationName)\Project1.dll"

参数说明:

  • $(SolutionDir):自动获取你的解决方案根目录路径
  • ILMerge.3.0.41:你安装的ILMerge版本号,需和实际安装版本匹配
  • /out::指定合并后输出的程序集名称,这里加了Merged_前缀方便区分原文件
  • 最后两个路径分别是Project2的输出DLL和Project1的输出DLL

步骤4:验证合并结果

构建Project2,然后到输出目录(比如bin\Release)找到合并后的Merged_Project2.dll,用dotPeek打开它,确认Project1的命名空间和代码已经嵌入到这个程序集里,而非作为外部DLL引用。

步骤5:部署合并后的程序集

用CRM Plugin Registration Tool部署这个合并后的程序集,而不是原来的Project2.dll。因为合并后的程序集包含了Project1的所有代码,部署到CRM数据库后,加载时就不会出现找不到依赖的错误了。

额外注意事项

  • 确保ILMerge的版本和你的.NET框架版本匹配(CRM 2016适配.NET 4.5,选择对应版本的ILMerge即可)
  • 如果Project1还有其他依赖程序集,也要把它们添加到ILMerge的命令里一起合并
  • 非沙盒模式下存储在数据库的程序集必须是单一文件,合并后的程序集正好符合这个要求

内容的提问来源于stack exchange,提问作者myth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:28:04