2016-01-29 51 views
0

我写了一个.NET库,并且此库由第三方应用程序中的VBA宏调用。我使用了Robert Giesecke的Unmanaged Exports,这部分工作正常(库C#代码被调用,如果我附加到进程中,我可以进行内部调试等)。从第三方依赖关系调用的类库

当我需要使用其他库中定义的类型时,会出现问题,例如使用Prism Mvvm的WPF GUI需要Microsoft.Practices.Prism.Mvvm程序集。在这种情况下,.NET搜索程序集但找不到它。使用进程监视器,融合日志查看器进行故障排除,发现搜索缺少的程序集非常短,搜索程序集的唯一地方是应用程序根目录(例如,在C:\ Program Files \ AppName \中)。无需查看dll所在的目录以及依赖关系的位置。我可以将所有依赖项复制到应用程序的根目录,但这不是一个好的情况(我不想陷入另一个应用程序的私有空间)

如何告诉.NET框架查看目录DLL是缺少程序集?

+1

如果你不想使用GAC,那么你将不得不使用AppDomain.AssemblyResolve事件。正确订阅它并不是那么高兴。请注意,您可能已经违反了您的“不能混入私人空间”的要求,并非让很多好的方法让本机代码找到您的主要程序集。这是“一分钱,一英镑”。 –

+0

感谢Hans,你给我带来了正确的路径 我看过那个appdomain.AssemblyResolve,发现这个答案: http://stackoverflow.com/a/1373295/1685379 这解决了我的问题,程序集被加载。在私人空间的注入确实存在,但只能通过一个vba宏和我的dll的界面,从另一个文件夹(这是在用户空间,所以不是真的私人了)加载 感谢您的提示! – rienafairefr

回答

相关问题