在C#中,我有一个程序集(AssemblyA),其内部对于同一解决方案中的另一个程序集(AssemblyB)是可见的,我使用
[assembly: InternalsVisibleTo(AssemblyB, PublicKey=1234566.......)]
但是,AssemblyA打包到我们的安装程序中,而AssemblyB仍然是我们不希望客户有权访问的内部库。是否需要装配B才能使装配A正确装载?目前我收到一个FileNotFoundException,说明未找到程序集或其中一个dependecies,我想知道是否是这种情况。
如果确实如此,是否有办法在没有装配B的情况下加载模块?
答案 0 :(得分:1)
AssemblyA具有InternalsVisibleTo(AssemblyB)
这一事实并不意味着AssemblyA依赖于AssemblyB或者需要运行时才能加载。
如果您正在尝试加载AssemblyA FileNotFoundException
,那是因为另一个原因。
如果您发布异常的堆栈跟踪,以及一些显示您正在执行的操作的代码,这可能有助于此处的人解决异常。
此外,您可以使用.NET附带的Fusion日志查看器(fuslgvw.exe
)等工具来查看.NET程序集绑定失败,并确切地找出哪个.dll缺失的位置以及它的位置预计会存在。