1

我正在Visual Studio 2010为我现有的项目创建一个测试项目。我添加了一个DLL在我正在为其创建此测试项目的项目中使用的参考。

现在的问题是,在添加该 DLL 的引用后,当我尝试执行测试时,我得到一个运行时异常

System.IO.FileNotFoundException: Could not load file or assembly 
'SOME NAME, Version=2.5.2.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified

我已经通过将该Copy Local引用的属性更改为 True 来解决这个问题。但我不想把它改成真的。因为我不想在测试项目的调试文件夹中复制它。

还有其他方法吗?

4

2 回答 2

0

这是我几年前问自己的一个重要问题,并找到了以下实用的解决方案:

  • 将所有应用程序 dll(要测试)放入$root$\bin\Debug
  • 将所有测试 dll 放入$root$\bin
  • 对于每个测试 dll 或 exe,都有一个App.config类似于以下内容的文件(请注意,我.\Debug当然包含在探测路径中,但也.\NUnit\bin因为我将 NUnit 程序集放在那里)

<?xml version="1.0" encoding="utf-8" ?> <configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath=" Debug;NUnit\ bin " /> </assemblyBinding> </runtime> </configuration>

在此处输入图像描述

顺便说一句,只是从不使用Copy Local = true,我写了关于这个主题的白皮书(它可以将编译时间减慢10 倍!)

于 2012-08-22T20:48:14.110 回答
0

当我们谈论 VS 2010 中的测试项目时。然后我们有“Local.testsettings”文件,在“解决方案项目”目录内的测试解决方案中自动创建。

为了提供对测试项目中所需的可执行文件/Dll 的引用,我们需要添加它们的引用,并且如果我们不想创建这些 ececutables/DLL 的本地副本,我们需要修改这个“Local.testsettings”文件。

现在的问题是在这个文件中要改变什么?在 Visual Studio 中双击此“Local.testsettings”文件。转到“单元测试”菜单项。为要加载的程序集提供根文件夹。(这可以是您希望在我们的测试项目中使用可执行文件/DLL 的任何目录)。使用“添加文件夹”按钮在运行测试时使用的文件夹中提供相同的文件夹。

注意:要保存此文件,您需要替换之前的文件。点击“应用”按钮。然后单击“另存为”按钮,选择旧“Local.testsettings”文件的位置并替换该文件。

对我来说,在我的测试项目中,我没有创建测试项目中使用的任何 DLL 的本地副本。更改“Local.testsettings”文件后,我可以成功运行我的测试。

于 2012-08-23T07:39:12.327 回答