Visual studio Visual Studio正在调试期间缓存程序集的旧版本

Visual studio Visual Studio正在调试期间缓存程序集的旧版本,visual-studio,debugging,breakpoints,Visual Studio,Debugging,Breakpoints,我目前正在使用Visual Studio 2019 Enterprise。自从2017年VS开始,我就有这个问题,也许更远。问题在于,对于某些项目(没有明显的韵律或原因),VS似乎会缓存依赖程序集的旧版本。当我调试时,如果我修改了那些程序集中的代码,我不会命中它/不能命中断点。解决办法总是重建一切。。。两次。。。然后发射 IMHO,这很难排除的原因是它不一致,因为它不会发生在每个项目中,但一旦它是给定项目的问题,它总是该项目的问题。以下是关于我们解决方案结构的一些背景信息: 我们在单独的解决方案

我目前正在使用Visual Studio 2019 Enterprise。自从2017年VS开始,我就有这个问题,也许更远。问题在于,对于某些项目(没有明显的韵律或原因),VS似乎会缓存依赖程序集的旧版本。当我调试时,如果我修改了那些程序集中的代码,我不会命中它/不能命中断点。解决办法总是重建一切。。。两次。。。然后发射

IMHO,这很难排除的原因是它不一致,因为它不会发生在每个项目中,但一旦它是给定项目的问题,它总是该项目的问题。以下是关于我们解决方案结构的一些背景信息:

我们在单独的解决方案/项目中创建所有中端库,然后构建这些库的调试版本。我们将这些调试程序集的dll/pdb文件部署到一个公共的BIN filder,然后将其用于任何具有依赖关系的项目。我们的主要应用程序是一个web应用程序,带有.net远程处理。我们的中端服务在“远程服务器”应用程序中公开,该应用程序实现服务层并引用我提到的中端库

例如,问题是我将在某些程序集中进行一些更改。我们称之为corp.shopping.businessobjects。我构建了它,将它部署到公共bin中,它被Corp.Shopping.RemotingServer项目引用。如果我在Corp.Shopping.BusinessObjects中更改了一个类,部署它,然后调试远程处理服务器,那么我的断点在该代码中不起作用,新的代码更改也不会受到影响。这就像是在使用程序集的某个缓存版本,尽管查看项目的输出箱、公共箱和远程处理服务器的输出箱中的dll/pdb文件本身都会显示正确的日期/时间


显然,当您无法依赖代码的完整性来调试单元测试时,这会使单元测试成为一场噩梦。关于如何诊断这里发生了什么有什么建议吗?我有一种感觉,这是Visual Studio的某种缺陷,但如果是这样的话,我很惊讶它已经存在这么久了。我不可能是唯一一个经历过这种事情的人。顺便说一句,不仅仅是“我”;它也是任何其他开发者。同样,一旦这是一个特定项目的问题,它似乎永远是该项目的问题。

在调试期间,您可以打开Debug->Windows->Modules以检查是否加载了正确的dll。不幸的是,在我们的程序集文件中,我们将版本硬编码为1.0.0.0。我认为这是为了防止我们陷入DLL地狱,但这(我猜)也会让简单地根据版本号识别正确的程序集变得更加困难,除非我可以找到另一个构建签名?