C# 单元测试中调试System.IO.FileLoadException
对于我正在现代化的项目,我有一套由应用程序的原始开发人员提供的单元测试。在我早期的现代化建设中,它们是完全绿色的;然而,它们已变为红色,但大多数情况下都有相同的例外: 例外情况:C# 单元测试中调试System.IO.FileLoadException,c#,unit-testing,assembly-resolution,C#,Unit Testing,Assembly Resolution,对于我正在现代化的项目,我有一套由应用程序的原始开发人员提供的单元测试。在我早期的现代化建设中,它们是完全绿色的;然而,它们已变为红色,但大多数情况下都有相同的例外: 例外情况: System.IO.FileLoadException: Could not load file or assembly 'MyApp.BusinessLayer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependen
System.IO.FileLoadException: Could not load file or assembly 'MyApp.BusinessLayer, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. Access is denied.
at MyApp.SomeExecutable.SomeClass.SomeMethod(args)
at MyApp.UnitTests.SomeExecutableFixture.CanValidateSomething() in [place of invocation of SomeClass.SomeMethod]
该异常没有内部异常
从我所看到的情况来看,这发生在任何引用MyApp.BusinessLayer
程序集中定义的内容的方法中,友好的错误消息通知我无法加载该程序集…显然是由于访问被拒绝
我尝试了以下方法来访问程序集:
fuslogvw.exe
,并在运行时运行测试以了解绑定过程。没有信息出现;就好像在Visual Studio 2015中运行测试对Fusion日志查看器是完全不可见的!即使在重新启动之后,Fusion日志查看器也没有关于正在发生的程序集绑定的信息。(感谢@AndrewAu,@CodeCaster)问题:除了授予自己对文件夹的完全访问权限之外,我还可以做些什么来解决此
FileLoadException
,特别是如果这是一个访问权限问题?我所做的一切不应该都解决了访问问题吗?如果是这样的话?尝试使用Fusion日志查看器(fuslogvw.exe)了解程序集加载过程?您能否提供一些信息,说明此失败程序集的位置?与要测试的DLL位于同一文件夹中?检查是否有进程未锁定此程序集。您可以使用该工具查看哪些进程打开了它的句柄。@AndrewGray您确定在测试和DLL中的目标是相同的.NET版本吗?启用fusion日志记录后,您需要重新启动Visual Studio。