0

我的解决方案由几个本机 C++/CLI 包装器和托管库/程序集组成。包装器项目引用不同的本机 DLL 项目。每次我更改本机依赖项的 .cpp 文件中的实现细节时,都会重新构建所有 CLI/.NET 项目(不仅仅是链接,而是重新编译)。这也发生在 Debug 配置中(没有 Whole-Programm Optimization..)。这种行为有什么原因吗?由于解决方案相当大,重建需要很多时间,所以如果 VS 能避免任何不必要的重建,那就太好了。

4

1 回答 1

1

这是预期的行为。.NET 程序集“依赖”非托管 DLL,当 DLL 发生更改时,它们会检测到并重新构建。非托管 C++ 项目的编译单元是 .cpp 文件。.NET 程序集的编译单元是整个程序集。没有办法只重新编译一个 .cs(或托管 c++)文件。

您可以通过使用 ::GetProcAddress() 来获取指向非托管 DLL 中操作的函数指针来解决此问题。然后,您可以删除 .NET 程序集对非托管 DLL 的 .lib 文件的依赖,并且每次 .lib 更改时它都不会重新编译。

于 2010-02-11T15:40:42.070 回答