2013-08-27 51 views
1

当我运行单元测试序列化到一个XML文件,我不断收到错误消息:Visual Studio无法加载文件或程序集;也许缓存?

无法加载文件或组件 “Company.Fin.Bank.Common.XmlSerializers.dll,版本= 1.0。 0.0, Culture = neutral,PublicKeyToken = null'或其依赖项之一。 系统找不到指定的文件。

我想Company.Fin.Bank.Common.XmlSerializers.dll可能在缓存的某处,但它不可能找到这个DLL,即使我不需要该DLL。我想删除它。但我在哪里可以找到它?它可能在缓存中?如果是的话我怎么能从VS清理缓存?这个问题对我来说很新。

奇怪的是,我用另一台笔记本电脑(赢得7)来运行单元测试,没有错误信息,我得到了 - 它的工作。但是当我用我自己的笔记本电脑(赢8),我不断收到错误消息。我不知道为什么。

我希望能找到您的解决方案。你的帮助意味着很多。谢谢!!!

+0

通过cache您是指GAC?如果是这样,请在C:\ Windows \ assembly或C:\ Windows \ Microsoft.NET \ assembly中查看,如果您使用的是.NET 4.0或更高版本。 –

+0

如果展开应用程序的References文件夹,那里是否有一个有黄色三角形的装配体?这意味着它无法解决它。有可能是其他笔记本电脑有这个DLL,你的没有。找到它,将其复制并添加为待解决的参考。线索出现在错误消息中:) –

+0

您的项目中是否可能存在另一个将该.dll作为依赖项的库? – squillman

回答

0

即使我不需要该DLL

Visual Studio中通常会删除不需要的DLL。通常这是由依赖关系引起的(这很难追踪)。

我想将其删除。

在解决方案资源管理器中签入项目的参考资料。如果它们中的任何一个有黄色三角形,则表示无法找到它们(如果您实际上没有使用该参考项目,该项目仍可编译并运行)。

它可能在缓存中吗?

正如Daniel Kelley提到的C:\Windows\assemblyC:\Windows\Microsoft.NET\assembly是全局程序集缓存所在的位置。如果不在那里检查参考的提示路径(它将显示在属性中)。

祝你好运找到你的参考,请记住,你不仅需要实际的DLL,而且在大多数情况下需要使用所有的参考。像DotPeek这样的反编译器也是有用的,如果你需要更谨慎的方式来查看引用。 /反序列化你的类(性能 原因)

3

即组件是由所述框架(XMLSerializer的)

在.NET实现产生dynamically,XmlSerializer的生成临时 组件用于序列化。

此外,这可能是normalbehavior - 它阻止您的应用程序运行?

+0

+1。链接的问题也有办法生成这种类型的程序集(如果由于某些原因必须修正异常 - 即由于临时文件的某些权限而无法动态生成程序集) –

相关问题