1

从 VS2010 迁移的单元测试项目仍然使用自动生成的私有属性访问器。

在对包含类库项目、类库项目的单元测试项目和 Web 项目的解决方案进行数小时编码和测试后,突然出现错误。Web 项目在 IIS Express 下执行。

错误 24 无法加载文件或程序集“The.ClassLibrary,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。.ClassLibrary.Tests

事实

  • The.ClassLibrary.Tests 有一个对 The.ClassLibrary 的项目引用。
  • 没有其他构建错误(检查构建输出而不仅仅是错误窗口)
  • DLL 以当前时间戳在物理上存在bin\debug
  • 我重新启动了 IIS Express
  • 我重新启动了 Visual Studio
  • 清理/重建解决方案
4

1 回答 1

0

选项 A

解决这个问题。它可能会再次发生。

除了尝试的步骤之外,还需要搜索并删除磁盘上所有出现的 The.ClassLibrary.Dll。所以,完整的程序是:

  • 停止 IIS Express
  • 退出 Visual Studio 2012
  • 搜索并删除“缺失”DLL 的所有实例。
  • 启动 Visual Studio 2012

我希望这可以帮助别人。

选项 B

正确修复问题

私有访问器在 VS2012 中折旧。相反,将需要对单元测试可见的私有内容改为内部,并使用正在测试的项目中的InternalsVisibleTo属性AssemblyInfo.cs来允许测试项目访问测试对象的内部属性、方法和字段。

AssemblyInfo.cs(MyProject 的)

[assembly: InternalsVisibleTo("MyNs.MyProject.Tests")]
于 2013-02-09T21:11:23.787 回答