如何使用我的测试项目中另一个文件夹/位置的可执行文件/ DLL?

时间:2012-08-22 10:56:29

标签: .net visual-studio-2010 deployment dependencies

我正在Visual Studio 2010为我现有的项目创建一个测试项目。我添加了一个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 正在我正在创建此测试项目的项目中使用。

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

Copy Local

我已通过将该引用的{{1}}属性更改为True来解决此问题。但我不想将其改为真。因为我不想在测试项目的调试文件夹中复制它。

还有其他方法吗?

2 个答案:

答案 0 :(得分:0)

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

  • 将所有应用程序dll(进行测试)放入$root$\bin\Debug
  • 将所有测试dll放入$root$\bin
  • 对于每个测试dll或exe,有​​一个App.config文件,看起来像下面的内容(注意我包含在探测路径中,.\Debug当然,还有.\NUnit\bin因为我把NUnit程序集放在那里)

<?xml version =“1.0”encoding =“utf-8”?>     <结构>       <运行时间>         < assemblyBinding xmlns =“urn:schemas-microsoft-com:asm.v1”>           < probing privatePath =“调试; NUnit \ bin ”/>         < / assemblyBinding>       < /运行>     < /结构>

enter image description here

顺便说一句,从不使用Copy Local = true,我在这个主题上写了white books(它可以将编译时间减慢到 10次!)

答案 1 :(得分:0)

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

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

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

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

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