我有一个类库,它包含WPF用户控件。 该库有一定的依赖性,但我想将它部署为一个组件。 据我所知IlMerge有一些问题与WPF。 我试图Costura,但它仅适用于应用程序,而不是为类库(因为我发现这里 )。 有什么办法来实现我的目标?
Answer 1:
作为贡献者Costura之一,我现在可以证实,它适用于库以及应用程序。
事实上所有Costura的单元测试是在一个库中,所以它肯定的作品。
Answer 2:
看看这个链接 。 当我读的地方,ILMerge的连作者告诉,如果他知道的方式,ILMerge也就不存在了。 我个人已经用它的WinForms项目和它的工作很好,但它表示 ,它正确处理WPF。
Answer 3:
我知道它已经回答了,但修复使用反射,你可以将下列代码附着在AssemblyLoad事件组件的装载
var assembly = Assembly.LoadFile(@"<path to your dll>");
var assemblyLoaderType = assembly.GetType("Costura.AssemblyLoader", false);
var attachMethod = assemblyLoaderType?.GetMethod("Attach", BindingFlags.Static | BindingFlags.Public);
attachMethod?.Invoke(null, new object[] { });
文章来源: .NET merge class library references