代码之家  ›  专栏  ›  技术社区  ›  Ludvig A. Norin

Visual Studio 2008托管增量生成不起作用

  •  3
  • Ludvig A. Norin  · 技术社区  · 15 年前

    我在“托管C++项目”中启用了“管理增量构建”。我用C语言编写了一个DLL,该解决方案同时包含C++和C语言项目。我还没有定义项目之间的任何依赖关系,但是C++项目引用的是c*ydll。

    问题是,无论何时重新构建C.*项目,C++项目都会进行完全的重建。发生这种情况时,我将收到此错误消息:

    无法检查c:\myproj\mycscode.dll。假设发生重大变化。

    我在虚拟机中运行Windows7(这可能是一个时间问题吗?).

    2 回复  |  直到 9 年前
        1
  •  1
  •   Ludvig A. Norin    15 年前

    经过一些研究,我的一个同事告诉我,这是一个在Visual Studio 2008 SP1中确认的错误,没有可用的修补程序,删除SP1可以解决这个问题。不过,我没有任何链接来支持这些信息。

    我们的解决方案是将C++实现文件从C++项目中移出,并使用自定义生成步骤(使用/Table:Mead参数为CS.exe)编译它们,并将对象文件包含在引用托管代码类型的C++源文件中,如下所示:

    #using "MyCScode.obj"
    

    注意事项:

    netmodule必须使用.obj扩展名,这似乎是Visual Studio确定链接器将使用哪些输入的方式中的一个错误(通常您将改为调用它.netmodule)。

    每当C文件被更新时,我们仍然会得到所有具有C++使用的C++源文件的完全重建。但这比全面重建整个项目要好。

        2
  •  1
  •   Peter Schneider    14 年前

    我想我找到了一个解决办法:

    我在每个C++ +CLI项目的A/C/C++>通用AY选项页中显式地将$Outdir添加到了A.*解析解决方案中。在这之后,“不能检查…假设发生了重大变化。“在程序集内部发生变化且托管增量构建按预期工作的情况下,消息不再出现。