Jak*_*ker 3 c# mstest sevenzipsharp
在我的程序中,我使用SevenZipSharp生成zip文件。SevenZipSharp是一个托管DLL,它将加载另一个DLL 7z.dll。我使用SevenZipCompressor.SetLibraryPath手动将SevenZipSharp的路径设置为7z.dll。
当我在“调试”模式下执行程序时,一切正常,并且生成的zip文件非常好。但是,当我使用mstest执行单元测试时,SevenZipSharp始终会给我以下错误:
“测试方法引发异常:SevenZip.SevenZipLibraryException:无法加载7-zip库或内部COM错误!消息:无法加载库。”
我怀疑MSTest可能正在做某些事情阻止SevenZipSharp能够加载7z.dll,例如在一个安全沙箱中运行(或其他。我是C#和MSTest的新手...)
有谁知道会发生什么事吗?
谢谢!
尽管该问题提出了一个可疑的方案,但MSTest的一般问题是未加载所需的DLL,这似乎是一个常见的问题,值得一提。
默认情况下,MSTest会将测试容器认为需要的程序集复制到默认结果文件夹的“输出”文件夹中,每次运行时该文件夹都会更改。
MSTest并不总是会自动自动正确推断出必要的程序集;如果没有显式直接引用程序集,则不会复制该程序集。此外,通常不会检测到本机DLL。
我不知道设置MSTest搜索路径的直接选项。您可以按照上面的建议使用procmon.exe确定搜索路径(基本上是标准的Windows DLL搜索)。
直觉上,默认搜索路径不包含启动目录,我认为这是造成混乱的原因。运行测试时,当前目录是测试结果“ Out”目录,而不是MSTest启动目录。
但是,它是可以控制与MSTest的搜索行为(和复制行为)测试设置文件。您可以通过Visual Studio轻松创建和编辑这些设置(请参阅“测试”菜单),然后在MSTest命令行上指定创建的设置文件。您可以为Visual Studio和MSTest使用不同的设置文件。
通过这种方式,您可以精确控制将哪些DLL复制到测试目录中。请参阅创建测试设置以从Visual Studio运行自动化测试以获取有关此信息。
当然,DLL加载失败可能是由于缺少依赖关系所致,并且错误消息中提到的DLL 本身也可能存在。您可以使用依赖性查看器或procmon来拾取DLL中意外的依赖性。
| 归档时间: |
|
| 查看次数: |
3668 次 |
| 最近记录: |