重建后难以加载引用

时间:2012-11-21 14:59:40

标签: c# .net vb.net visual-studio-2010 dll

我正在同时编写应用程序和库,每当我更新库时,在消费者应用程序中识别它都有点困难。我为每个库和应用程序打开了一个单独的Visual Studio实例。重建库后,我在消费者应用程序中看到下面的警告/错误。然后我要么删除引用并再次添加它。或者我必须清理并构建3-4次库解决方案,以便在消费者应用程序VS解决方案中消失这样的警告/错误。为什么这样做4次就会有1次或2次这样做。?

想了解为什么会发生这种情况,是否可以采取措施使这项工作更顺利?

不确定它是否相关,但我的大部分应用程序是用VB.NET编写的,而C#中的库是(因为我正在将所有内容更改为C#)。我还在消费者应用程序VS中打开库中的C#文件,因为它在调试期间弹出。我还在库项目/ bin / Debug文件夹中引用了库dll,因为我在这个开发阶段做了很多改动。

  

警告1 Imports'somelibrary'中指定的命名空间或类型   不包含任何公共成员或无法找到。确保   命名空间或类型已定义并包含至少一个公共   会员。确保导入的元素名称不使用任何名称   别名。 '本地路径'

...

  

错误72无法加载引用的库'path \ somelibrary.dll':   进程无法访问该文件,因为它正被另一个文件使用   过程

3 个答案:

答案 0 :(得分:3)

  

我正在同时编写应用程序和库,每当我更新库时,在消费者应用程序中识别它都有点困难。 我为每个库和应用程序打开了一个单独的Visual Studio实例。

这是您问题的根本原因。当Visual Studio的控件发生变化时,Visual Studio不喜欢它。您应该打开一个解决方案,其中包含所有相关项目。然后,当某些内容发生变化时,所有依赖于该项目的项目都将自动重建。 (至少,这是默认值。)

  

重建库后,我在消费者应用程序中收到下面的警告/错误。然后我要么删除引用并再次添加它。或者我必须清理并构建3-4次库解决方案,以便在消费者应用程序VS解决方案中消失这样的警告/错误。为什么这样做4次就会有1次或2次这样做。?

我认为它与清理和重建它的次数没有任何关系,但是自上次进行更改以来已经有多长时间了 - 你必须等待足够长的时间才能构建dll以释放dll文件上的锁定,在使用它的VS实例之前能够访问它。

答案 1 :(得分:1)

当你构建一个项目时,你将锁定你构建它的项目中的.DLL文件,因为这是visual studio的库实例将使用的程序集的版本 - 但是你引用了那个相同的库另一个过程因此你看到了错误。

你有两个选择,继续有两个实例,然后关闭这两个实例再打开它们就可以了。

您最好做的是将您正在引用的项目本身(并且正在收到错误)添加到您的解决方案中。然后,而不是引用YourProject/bin/debug/assembly.dll,而不是通过Projects标签添加对本地项目的引用。然后,这将使一个进程引用它所需的适当程序集。

答案 2 :(得分:0)

对于解决方案中的每个项目,请检查项目设置 - >编译标签 - >高级编译选项...... - >目标框架(所有配置),看看它们是否全部(例如).NET框架4.具有不同或错误的框架可能会导致您现在遇到的问题