ILMerge - "Unresolved assembly reference not allowed",packages 文件夹中的 RestSharp Nuget 包

ILMerge - "Unresolved assembly reference not allowed", RestSharp Nuget package in the packages folder

上下文: 我正在编写 CRM 插件,尝试使用最新版本的 RestSharp。我正在尝试使用 ILMerge 将 RestSharp(及其依赖项,例如列出的错误)合并到插件 DLL 中。

Merged assemblies: ... source\repos\MyCRMVSSolution\packages\System.Runtime.CompilerServices.Unsafe.5.0.0\lib\net45\System.Runtime.CompilerServices.Unsafe.dll; ...

error : Unresolved assembly reference not allowed: System.Runtime.CompilerServices.Unsafe.

见上文,“合并程序集”命令表明它知道文件在 /packages/ 下的位置,并且知道尝试合并它。然而它说这是一个未解决的参考。

为什么会返回“未解决”呢?不确定要审查或调试什么。它显然在我想要的地方阅读它,在包裹下。但不知何故。


使用 Nuget 包 MSBuild.ILMerge.Task,配置 default/OOTB。

降级到具有 0 个依赖项的 RestSharp 版本。这样,您将避免 ILMerge 尝试查找和管理其所有依赖项。

具有 0 个依赖项的示例 RestSharp Nuget 包: <package id="RestSharp" version="106.10.1" targetFramework="net471" />

评论:

总体而言,使用 ILMerge for CRM 插件,明智的做法是尽可能少地依赖它来做正确的事情...尽可能限制需要合并的第 3 方 DLL 非常认真地对待这一点,以避免与 ILMerge 进行无用的战斗。