无法在与ILMerge合并的控制台应用程序中加载插件

时间:2018-10-14 11:59:36

标签: c# plugins console-application ilmerge

我在Net45中将引用了libray类mylib.dll的控制台应用程序与ILMerge utility合并。

运行时实现接口的控制台应用程序加载插件。

该插件引用了console.exe使用的同一类库mylib.dll

如果我在不合并的情况下运行控制台应用程序,则可以成功加载插件。

合并命令

    ilmerge /out:"outdir\console.exe" console.exe *.dll 
        /target:exe /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 /wildcards /ndebug 

但是当使用ILMerge将控制台应用程序及其所有依赖项合并时,将无法加载该插件并引发异常:

  

加载程序异常:System.IO.FileNotFoundException:无法加载文件或程序集“ mylib.dll,版本= 3.0.0.0,区域性=中性,PublicKeyToken =空”或其依赖项之一。该系统找不到指定的文件。   文件名:“ mylib.dll,版本= 3.0.0.0,文化=中性,PublicKeyToken =空”

一个避免异常的解决方法是插件引用合并的console.exe应用程序。 在那种情况下,它工作正常,没有例外,但是我希望插件引用类库,尤其是console.exe引用插件引用的所有dll。

问题:

我想确保所有使用ILMerge的合并程序集对于控制台应用程序中的插件都是可见的,并且无法成功加载吗?

0 个答案:

没有答案