1

我的解决方案中有三个项目:一个名为 LibX 的 C++ 项目、一个名为 LibX.NET 的 C# 项目,它使用 P/Invoke 包装 LibX.dll,以及一个名为 TestX 的 C# WPF 应用程序。

LibX.NET 被标记为依赖于 LibX,并且 TestX 将 LibX.dll 复制到其输出目录作为构建后步骤的一部分(因为我想不出更好的方法来确保 TestX 可以使用 LibX.dll)。

在 VS2010 中,当我在 LibX 中更改文件并构建时,LibX.NET 和 TestX 都已构建,因此它们的构建后事件会触发并且所有内容都是最新的。

但是,在 VS2012 中,当我更改 LibX 中的文件时,VS 不会构建 LibX.NET 和 TestX,声称它们是“最新的”。这是 VS2012 中的错误/回归,还是故意的?如何让 TestX 运行其构建后步骤?

4

1 回答 1

0

如果您希望 LibX 中的更改触发 LibX.Net 中的构建,您需要反转这两个项目之间的项目依赖关系。

由于您已标记 LibX.Net 依赖于 LibX,因此您需要编译 LiX.Net 以构建两个项目。当您这样做时,两个项目都将根据是否进行了更改而被编译/跳过。这与 VS2010 中的行为相同。

于 2013-01-26T07:42:03.190 回答