0

我正在为一个新项目评估 PostSharp,但在更改后首次构建项目时似乎无法克服以下错误:

无法将文件“C:\SourcePath\Output\Debug\MyApp.vshost.exe 复制到 obj\Debug\Before-PostSharp\MyApp.vshost.exe:文件被进程锁定:MYAPP.VSHOST (8064)

该错误仅发生在第一次构建尝试中。如果我立即重新构建,则不会发生错误。我只能猜测这是因为该项目实际上并没有第二次重建。

我在 SharpCrafters 论坛中阅读了一些帖子,这些帖子表明这个问题在 v2.1 之前就存在,但据报道已得到修复。我正在使用来自 NuGet 的 v2.1.6.14(在 VS 2010 中),并为我引用 PostSharp 的每个项目都收到此错误。每次都需要 2 次构建肯定是不合理的,所以我正在寻找一个可能的解决方案。到目前为止,我对我所看到的感到非常满意,但如果无法解决,我将不得不转向另一个方向。

更新

根据 Gael 的要求,我生成了诊断构建日志并将其发送给他,看起来他能够在最新版本 (2.1.6.14) 中解决问题。

我相信部分(或全部)问题可能是由于我所有项目的构建输出都设置为一个公共位置(即不是每个项目下的 /bin/debug 文件夹)。这是因为我们使用的是 MEF DirectoryCatalog,它将发现位于输出路径中的程序集中包含的 Imports 和 Exports。PostSharp.targets 文件将 vshost.exe 文件排除在复制操作之外,但仅当它共享输出程序集的名称时。就我而言,vshost.exe 文件具有不同的名称,因此没有被排除在外。

4

1 回答 1

0

该问题已在 PostSharp 2.1.6.15 中重新修复。

于 2012-05-16T06:23:43.733 回答