我有一个包含WPF用户控件的类库。这个库有一些依赖,但我想将它部署为一个程序集。据我所知,IlMerge在WPF方面存在一些问题。我尝试过Costura,但它只适用于应用程序,而不适用于类库(因为我发现了here)。有没有办法实现我的目标?
答案 0 :(得分:4)
作为Costura的贡献者之一,我现在可以确认它适用于图书馆和应用程序。
事实上,Costura的所有单元测试都在库中,所以它肯定有效。
答案 1 :(得分:1)
结帐this link。当我在某处阅读时,即使是ILMerge的作者也会告诉他,如果他知道这种方式,那么ILMerge将不存在。 就我个人而言,我已经在WinForms项目中使用它并且它工作得很好,虽然它是stated它正确处理WPF。
答案 2 :(得分:0)
我知道它已经回答了,但是要使用反射来修复程序集的加载,可以在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[] { });