我有一个 C# 库,其中包含我们开发的一些程序集和一些第三方 o 我需要将所有内容放在一个程序集文件中。
当我尝试使用 ILMerge合并所有内容时,出现以下错误:
合并时发生异常:
ILMerge.Merge:程序集“TestLibrary”未标记为仅包含托管代码。(考虑使用 /zeroPeKind 选项——但请先阅读文档!) em ILMerging.ILMerge.Merge() em ILMerging.ILMerge.Main(String[] args)
当我从合并中删除 TestLibrary 时,它工作正常。但是为了让我的项目正常工作,我已经单独引用了 TestLibrary 并启用了 useLegacyV2RuntimeActivationPolicy="true"。
因此,经过更多研究后,我决定尝试使用Jeffrey Richter使用 Embedded Resources :
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 库。