为什么我的Service Fabric代码会锁定自己的PDB?

And*_*ger 6 c# pdb-files visual-studio-2015 azure-service-fabric

我正在开发一个Service Fabric应用程序,它包含许多无状态服务和单个有状态服务.当我第一次发布时,一切都很好,它已部署到我的本地群集.在此之后,如果我尝试打包或发布应用程序而不首先明确地停止它,我会收到以下错误:

CSC:错误CS2012:无法打开'C:...\ProjectFolder\_obj\x64\Debug\ProjectName.pdb'进行写入 - '进程无法访问文件'C:...\ProjectFolder\_ obj\x64\Debug\ProjectName.pdb'因为它正被另一个进程使用.

根据进程资源管理器,PDB被我自己的ProjectName.exe锁定.这是我的应用程序中的单个有状态服务.

  1. 为什么我的exe会锁定自己的PDB?我能理解它是否是Visual Studio所做的.
    • 我在自己的代码中看不出任何应该导致这种情况的内容,所以我假设它是我正在调用的Fabric代码中的内容.
  2. PDB与应用程序一起部署,但是原始源目录中的文件被锁定 - 为什么不运行代码旁边的PDB?
  3. 为什么我只看到与有状态服务有关的错误,而不是无状态服务?
    • 我怀疑这与状态服务有关,在启动时会产生大量错误,Fabric可能需要符号来正确显示.
  4. 我怎么能阻止它发生 - 使用正确的PDB或根本不使用它们,除非我通过Visual Studio进行调试?

编辑:在github引发.目前的解决方法:

此时的当前解决方法是限制网络服务对构建文件夹(obj\x64\Debug)中的pdb的访问.

And*_*ger 0

根据提出的问题,该问题现在似乎已得到解决。

“我们将结束这个问题,因为我们相信这两个问题现在都已经由 5.6 运行时和 1.6 工具解决了。”

看来升级现在是第 4 点的答案。如果有人可以回答 1-3,我会很高兴移动大绿色勾号。