我正在同时编写应用程序和库,每当我更新库时,在消费者应用程序中识别它都有点困难。我为每个库和应用程序打开了一个单独的Visual Studio实例。重建库后,我在消费者应用程序中看到下面的警告/错误。然后我要么删除引用并再次添加它。或者我必须清理并构建3-4次库解决方案,以便在消费者应用程序VS解决方案中消失这样的警告/错误。为什么这样做4次就会有1次或2次这样做。?
想了解为什么会发生这种情况,是否可以采取措施使这项工作更顺利?
不确定它是否相关,但我的大部分应用程序是用VB.NET编写的,而C#中的库是(因为我正在将所有内容更改为C#)。我还在消费者应用程序VS中打开库中的C#文件,因为它在调试期间弹出。我还在库项目/ bin / Debug文件夹中引用了库dll,因为我在这个开发阶段做了很多改动。
警告1 Imports'somelibrary'中指定的命名空间或类型 不包含任何公共成员或无法找到。确保 命名空间或类型已定义并包含至少一个公共 会员。确保导入的元素名称不使用任何名称 别名。 '本地路径'
...
错误72无法加载引用的库'path \ somelibrary.dll': 进程无法访问该文件,因为它正被另一个文件使用 过程
答案 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.具有不同或错误的框架可能会导致您现在遇到的问题