c# - 在 .NET v4+ 程序集上嵌入\合并 .NET v1 程序集

标签 c# ilmerge

我有一个 C# 库,其中包含我们开发的一些程序集和一些第三方的程序集,我需要将所有内容都放在一个程序集文件中。

当我尝试使用 ILMerge 合并所有内容时,出现以下错误:

An exception occurred during merging:

ILMerge.Merge: The assembly 'TestLibrary' is not marked as containing only managed code. (Consider using the /zeroPeKind option -- but read the documentation first!) em ILMerging.ILMerge.Merge() em ILMerging.ILMerge.Main(String[] args)

当我从合并中删除 TestLibrary 时,它工作正常。但为了让我的项目正常工作,我单独引用了 TestLibrary 并启用 useLegacyV2RuntimeActivationPolicy="true"。

因此,经过更多研究后,我决定尝试使用 Jeffrey Richter 来使用嵌入式资源:

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {
   String resourceName = "AssemblyLoadingAndReflection." +
      new AssemblyName(args.Name).Name + ".dll";
   using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) {
      Byte[] assemblyData = new Byte[stream.Length];
      stream.Read(assemblyData, 0, assemblyData.Length);
      return Assembly.Load(assemblyData);
   }
};

它加载资源字节,但在 Assembly.Load 上失败,表明程序格式不正确。

TestLibrary 是一个 C++ .Net v1.0 库。

最佳答案

ILMerge 根本无法处理包含 native 代码的程序集。您必须在使用前在运行时提取 dll,或者传送 dll。 ILMerge using 2 third party dll's C++对此也有解释。

关于c# - 在 .NET v4+ 程序集上嵌入\合并 .NET v1 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13276481/

相关文章:

c# - 使用轴摄像机 P1344 c# 进行 Onvif 身份验证

c# - 我的抽象基础 MembershipProvider 在哪里?

ilmerge - 如何使用ilMerge将dll合并到exe文件中?

c# - 将单独的 DLL 合并为一个程序集以用于开源分发

c# - 在事件中使用 'this'

c# - 对多个方法 C# 使用单个事务

c# - 如何在 where 和 between 子句中查询 DBF(dbase) 文件日期类型字段

.net - 如何使用 ILMerge 将多个程序集合并为一个程序集

.net - 如何使用 ILMerge 将 XML 文档文件与 DLL 合并?

.net - 使用 ILMerge 创建签名库抛出异常