在C#中加载程序集时获取FileNotFoundException

时间:2012-11-26 20:54:38

标签: c# .net internalsvisibleto

在C#中,我有一个程序集(AssemblyA),其内部对于同一解决方案中的另一个程序集(AssemblyB)是可见的,我使用

[assembly: InternalsVisibleTo(AssemblyB, PublicKey=1234566.......)]

但是,AssemblyA打包到我们的安装程序中,而AssemblyB仍然是我们不希望客户有权访问的内部库。是否需要装配B才能使装配A正确装载?目前我收到一个FileNotFoundException,说明未找到程序集或其中一个dependecies,我想知道是否是这种情况。

如果确实如此,是否有办法在没有装配B的情况下加载模块?

1 个答案:

答案 0 :(得分:1)

AssemblyA具有InternalsVisibleTo(AssemblyB)这一事实并不意味着AssemblyA依赖于AssemblyB或者需要运行时才能加载。

如果您正在尝试加载AssemblyA FileNotFoundException,那是因为另一个原因。

如果您发布异常的堆栈跟踪,以及一些显示您正在执行的操作的代码,这可能有助于此处的人解决异常。

此外,您可以使用.NET附带的Fusion日志查看器(fuslgvw.exe)等工具来查看.NET程序集绑定失败,并确切地找出哪个.dll缺失的位置以及它的位置预计会存在。