我在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的合并程序集对于控制台应用程序中的插件都是可见的,并且无法成功加载吗?