我在使用 Visual Studio 2005 时遇到了一个烦人的问题...有时当我重建时,即使我执行了重建解决方案,它也会返回时没有错误或警告,但是当我稍后编辑另一个代码文件时,即使没有更改它并重建,它将在该其他文件中发现错误或警告。显然,早期的 Rebuild Solution 没有重新编译该文件!如何强制 VS 完全重新编译每个文件?
6 回答
当您的解决方案中有多个项目并且引用混淆时,我已经看到这种情况发生。
假设您的解决方案中有四个项目,Common、Business、Data 和 UI。假设 Common 被其他三个项目引用。
我们希望 Common 成为其他三个项目的“项目参考”——然后他们将从 Common 的构建输出目录中获取他们的副本。
但是,有时,其中一个项目会混淆它的参考。比如说,在这种情况下,UI 开始引用Data的构建输出目录中的 Common 副本。现在,编译“UI”而不编译“Data”的任何更改都将导致“Common”的两个可能不兼容的版本成为 UI 的依赖项。
另一种情况是对二进制文件的引用,例如来自“lib”目录。然后,其中一个项目最终引用了构建输出位置而不是 lib。
我不知道是什么原因造成的 - 但不幸的是,我一直看到它。
解决方法是遍历每个项目的引用并找到指向错误位置的一个(或多个)。
在重建之前清理解决方案可能会有所帮助——右键单击解决方案资源管理器中的解决方案并选择“清理解决方案”——这会删除临时文件并应该清除 bin 和 obj 文件夹,因此一切都被重建。
我在这里和 Guy Starbuck 在一起,但要补充一点,重建解决方案应该先做一个干净的解决方案,然后是构建解决方案,然后它应该已经解决了你的问题。但是 VS 2005 在这方面可能很糟糕。有时它只是在几次重建后才开始工作。如果升级到 2008 不是一个选项,请考虑手动清除 bin 文件夹。
这与配置管理器有关吗?您可以在此处选择解决方案构建中的哪些项目。不确定这是否有帮助。
根据警告的类型,如果我没记错的话是不可能的。
例如,XHTML 合规性警告消息仅在文件打开时显示。您可以检查 VS 中的容差设置,看看是否可以更改它。
这听起来很奇怪 - Rebuild 应该构建所有内容而不考虑更改,而 Build 应该只构建已更改的内容。
您所描述的行为只有在您修改了未更改文件引用的某些内容时才会发生,因此它现在不正确。