我有3个项目;Project1.Web
,Project1.Service
和Project1.Common
. 两者Project1.Web
都Project1.Service
依赖于Project1.Common
.
- 如果我重建包含所有 3 个项目的解决方案;一切正常。
- 如果我更改文件
Project1.Web
;文件构建到 Project1.Web\bin - 一切正常。 - 如果如果更改文件中的
Project1.Service
文件被构建到 Project1.Service\bin\Debug并且一些被复制到 Project1.Web\bin。复制的文件是 Project1.Common.dll,但没有构建(或复制)Project1.Web.dll。 - 中修改的文件
Project1.Service
不共享,它只是被修改以触发Project1.Service
.
有谁知道为什么 Visual Studio 会将构建工件复制到不属于增量构建的目录中?
当前,此事件序列离开Project1.Web
是非工作状态,Project1.Service
并且Project1.Web
通过第三方程序集依赖于同一程序集的不同版本。如果我们决定对它进行更改,Project1.Service
那么它的副作用就是 break Project1.Web
。
我已经尝试/检查了以下内容:
Project1.Web
和Project1.Service
(两个方向)之间没有依赖关系。- 中修改的文件
Project1.Service
不共享;并且没有定义前/后构建事件。 - 对 Project1.Service.csproj 项目文件执行 msbuild 并没有同样的效果。
- 拒绝对 bin 目录下的写入/创建权限
Project1.Web
不会导致增量构建失败。 - 在引用的详细或诊断 msbuild 输出中不发出任何输出
Project1.Web
(在 Visual Studio 中) - 使用
procmon
,我可以看到 devenv 正在使用mswebprj.dll
(C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Packages\mswebprj.dll) - 它调用文件的副本。