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

C# 在C中加载程序集时获取FileNotFoundException#,c#,.net,internalsvisibleto,C#,.net,Internalsvisibleto,在C#中,我有一个组件(AssemblyA),其内部对同一解决方案中的另一个组件(AssemblyB)可见,这是我使用 [assembly: InternalsVisibleTo(AssemblyB, PublicKey=1234566.......)] 但是,AssemblyA已打包到我们的安装程序中,而AssemblyB仍然是我们不希望客户访问的内部库。组件B是否需要在场才能正确加载组件A?目前,我收到一个FileNotFoundException,声明找不到then assembly或它

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

[assembly: InternalsVisibleTo(AssemblyB, PublicKey=1234566.......)]
但是,AssemblyA已打包到我们的安装程序中,而AssemblyB仍然是我们不希望客户访问的内部库。组件B是否需要在场才能正确加载组件A?目前,我收到一个FileNotFoundException,声明找不到then assembly或它的一个依赖项,我想知道是否是这种情况


如果确实是这种情况,是否有办法在不存在程序集B的情况下加载模块?

AssemblyA具有
内部可视性(AssemblyB)
这一事实并不意味着AssemblyA依赖于AssemblyB或需要它运行时才能加载

如果您试图加载AssemblyA时遇到
FileNotFoundException
,那是因为另一个原因

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


此外,您还可以使用.NET附带的Fusion日志查看器(
fuslgvw.exe
)等工具来查看.NET程序集绑定失败,并准确确定缺少哪个.dll以及它应该存在的位置。

AssemblyA具有
内部可视性(AssemblyB)
并不意味着AssemblyA依赖于AssemblyB或需要它在运行时加载

如果您试图加载AssemblyA时遇到
FileNotFoundException
,那是因为另一个原因

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


此外,还可以使用Fusion日志查看器之类的工具(
fuslgvw.exe
)这是.NET附带的,用于查看.NET程序集绑定失败,并准确找出缺少的.dll以及它应该存在的位置。

您所说的.NET几乎是给您的客户提供源代码,那么这又有什么关系呢?这绝不是建设性的。您是对的,但这只是一个注释……我们通常设置InternalsVisibleTo属性将内部构件公开给我们的单元测试程序集,并且我们能够在不需要存在单元测试程序集的情况下进行部署。因此,一般来说,只要AssemblyA不依赖AssemblyB,您就不需要AssemblyB来加载AssemblyA。因此,我收到的这个错误是由于另一个问题引起的。我想在使用朋友程序集时可能会有一些奇怪的行为(我对它们不太熟悉),但事实似乎并非如此。你说的是.net,你几乎给了你的客户源代码,那么这又有什么关系呢?这根本不是建设性的。你是对的,但这只是一个注释……我们通常设置InternalsVisibleTo属性,以向我们的单元测试程序集公开内部,我们能够在不需要单元测试组件的情况下进行部署。因此,一般来说,只要AssemblyA不依赖AssemblyB,您就不需要AssemblyB来加载AssemblyA。因此,我收到的这个错误是由于另一个问题引起的。我想在使用朋友程序集时可能会有一些奇怪的行为(我对它们不是很熟悉),但似乎不是这样。stacktrace在这里没有帮助。stacktrace在它爆炸的方法处停止,如果我运行调试器,它会在我尝试从“缺失”程序集中实例化对象时爆炸(甚至将对象设置为null也会爆炸)。还值得一提的是,这只发生在我们的程序安装时,调试时一切正常。我知道程序集可以工作,因为我们的一个服务也使用程序集,并且可以很好地访问dll。我想我会给Fusion Log Viewer一个镜头,看看它显示了什么。stacktrace在这里没有帮助。stacktrace在它爆炸的方法处停止,如果我运行调试器,它会在我尝试从“缺失”程序集中实例化对象时爆炸(甚至将对象设置为null也会爆炸)。还值得一提的是,这只发生在我们的程序安装时,调试时一切正常。我知道程序集可以工作,因为我们的一个服务也使用程序集,并且可以很好地访问dll。我想我会给Fusion Log Viewer一个镜头,看看会显示什么。