如何解决“BSCMAKE: error BK1500: Internal error”编译错误

12

我使用msbuild编译一个Visual Studio 2010解决方案,并需要无错误成功构建。

但是,每次我运行msbuild、重新构建或直接使用Visual Studio清理并编译我的解决方案时,我都会得到一些bscmake错误,例如此错误。有时,在不清理的情况下再次编译时错误会消失,但对我来说,运行两次msbuild不是一个好的解决方案。

[...]
10>  Generating Code...
11>  xxxxxxxx\mshtml.tlh(63588): warning BK4504: file contains too many references; ignoring further references from this source
11>  
11>BSCMAKE : error BK1500: Internal error
11>  
11>    Version 10.00.30319.01
11>  
11>    ExceptionCode            = C0000005
11>    ExceptionFlags           = 00000000
11>    ExceptionAddress         = 001343DA (00130000) "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\bscmake.exe"
11>    NumberParameters         = 00000002
11>    ExceptionInformation[ 0] = 00000000
11>    ExceptionInformation[ 1] = 00000000
11>  
11>  CONTEXT:
11>    Eax    = 00141B30  Esp    = 003CF1C0
11>    Ebx    = 04B142C6  Ebp    = 003CF770
11>    Ecx    = 04BB621C  Esi    = 00000006
11>    Edx    = 00000000  Edi    = 00000001
11>    Eip    = 001343DA  EFlags = 00010293
11>    SegCs  = 00000023  SegDs  = 0000002B
11>    SegSs  = 0000002B  SegEs  = 0000002B
11>    SegFs  = 00000053  SegGs  = 0000002B
11>    Dr0    = 00000000  Dr3    = 00000000
11>    Dr1    = 00000000  Dr6    = 00000000
11>    Dr2    = 00000000  Dr7    = 00000000

[...]

关键在于我不需要发布时的浏览信息,也不希望出现这个错误信息。在Visual Studio 2008中隐藏这些错误是可能的,但我认为编译器参数不再可用。

我该如何隐藏bscmake错误?

我可以在发布版本中停用bscmake吗?


8
将选项关闭即可,这些天它完全没有用处。C/C++,浏览信息,启用=无。 - Hans Passant
2
不需要同意浏览信息,否则会在解决方案尝试编写浏览文件时导致构建错误,还会增加构建时间,因此最好关闭它。 - EdChum
2
@HansPassant:您能提供更多信息吗?您说“这在今天已经完全无用了”-那么现在是什么可以实现相同的功能呢? - PJTraill
1
实际上,浏览信息在今天仍然被使用。例如ARCHITECTURE->生成依赖关系图。 - James John McGuire 'Jahmic'
1
@PJTraill:看这里了解“浏览信息”的目的。它的继承者似乎是“智能感知守护进程”。https://dev59.com/sHRB5IYBdhLWcg3wpYio - jing
2个回答

15
根据Hans Passants的评论:

输入图像描述

谢谢!

5
除了每个项目上的“启用浏览信息”选项外,每个源代码文件也有一个“启用浏览信息”的选项。如果CL.EXE仍然创建.SBR文件,则需要在每个源代码文件的属性下将该属性设置为“否”。此选项可以在从旧版Visual Studio项目转换过程中设置。 - Devin
2
你能提供更多的信息吗?Hans Passant说“这在当今完全没有用处了” - 那么现在是什么替代它发挥同样的功能呢? - PJTraill
我认为这个提议的解决方案已经为我解决了问题。谢谢! - sergiol
1
@PJTraill “虽然BSCMAKE仍然与Visual Studio一起安装,但不再被IDE使用。自Visual Studio 2008以来,浏览和符号信息会自动存储在解决方案文件夹中的SQL Server .sdf文件中。”请参见:https://learn.microsoft.com/de-de/cpp/build/reference/bscmake-reference - Carsten
@Carsten:感谢您提供的参考。我从中得出结论,虽然现在可能性不大,但有可能会想要生成 .sbr.bsc 文件以供某些第三方工具使用,但确实没有其他好的理由。 - PJTraill
1
@PJTraill:没错。有趣的是,Code Map功能需要启用/FR开关。但这是我所知道的Visual Studio中唯一仍在使用浏览信息的工具。 - Carsten

1
其中一个原因是在输出静态库的项目中编译带有/clr的.cpp文件。要么从文件中删除/clr,要么将项目更改为输出dll。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接