0

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

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

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

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

..

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

4

3 回答 3

3

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

这是你问题的根本根源。当超出其控制范围的事物发生变化时,Visual Studio 不喜欢它。您应该打开一个包含所有相关项目的解决方案。然后,当某些事情发生变化时,所有依赖于该项目的项目都将自动重建。(至少,这是默认设置。)

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

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

于 2012-11-21T15:29:58.060 回答
1

当您构建一个项目时,您将 .DLL 文件锁定在您构建它的项目中,因为这是 Visual Studio 的库实例将使用的程序集版本 - 但是您在另一个进程中引用同一个库因此您看到错误的原因。

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

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

于 2012-11-21T15:28:12.197 回答
0

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

于 2012-11-21T15:18:45.070 回答