为什么我在Visual Studio 2013中收到“vbc:警告BC42206:已超出警告的最大数量”?

时间:2014-11-19 22:55:03

标签: vb.net visual-studio visual-studio-2013 msbuild compiler-warnings

我正在维护一些我没有编写的遗留代码,并且当前会产生很多警告。我正在尝试修复我触摸的文件中的警告,但它们并未全部报告:每个项目获得101个,然后是此问题标题中的消息。

作为测试,我创建了一个针对.NET 4.5.1的全新VB.Net Windows窗体应用程序,并将150个未使用的局部变量插入到Form_Load中。

只有前101个触发警告,然后我得到"超过警告的最大数量":

screenshot

根据this question的答案,自Visual Studio 2012 / VB 11以来不应再有警告限制

我使用Visual Studio 2013并且构建日志中的CoreCompile行表明它正在从MSBuild版本12调用vbc.exe

C:\Program Files (x86)\MSBuild\12.0\bin\Vbc.exe /noconfig /imports:Microsoft.VisualBasic,System,System.Collections,System.Collections.Generic,System.Data,System.Drawing,System.Diagnostics,System.Windows.Forms,System.Linq,System.Xml.Linq,System.Threading.Tasks /optioncompare:Binary /optionexplicit- /optionstrict+ /nowarn:42016,41999,42017,42018,42019,42032,42036,42020,42021,42022 /optioninfer+ /nostdlib /platform:anycpu32bitpreferred /rootnamespace:WindowsApplication3 /sdkpath:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1" /highentropyva+ /doc:obj\Debug\WindowsApplication3.xml /define:"CONFIG=\"Debug\",DEBUG=-1,TRACE=-1,_MyType=\"WindowsForms\",PLATFORM=\"AnyCPU\"" /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.DataSetExtensions.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Data.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Deployment.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Drawing.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Windows.Forms.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Xml.dll","C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Xml.Linq.dll" /main:WindowsApplication3.My.MyApplication /debug+ /debug:full /filealign:512 /out:obj\Debug\WindowsApplication3.exe /subsystemversion:6.00 /resource:obj\Debug\WindowsApplication3.Form1.resources /resource:obj\Debug\WindowsApplication3.Resources.resources /target:winexe Form1.vb Form1.Designer.vb "My Project\AssemblyInfo.vb" "My Project\Application.Designer.vb" "My Project\Resources.Designer.vb" "My Project\Settings.Designer.vb" "C:\Users\blorgbeard\AppData\Local\Temp\.NETFramework,Version=v4.5.1.AssemblyAttributes.vb"

编辑:我尝试手动运行上述内容(即从命令行调用vbc.exe),但仍然只收到101个警告。

我也无法在Google上找到此错误消息的最新引用。

这让我怀疑我的本地配置有问题。

如何获取所有我的VB编译器警告列表?

2 个答案:

答案 0 :(得分:2)

  

无限(命令行)错误!   这实际上是件好事,让我解释一下。出于性能原因,Visual Basic IDE最多出现101错误(错误#102为“超出最大错误数”。)这可能使得难以估计某些情况下的剩余工作量,特别是在升级方案中。我们已经从这个版本的命令行编译器中删除了这个限制,尽管它仍然存在于IDE中。这意味着如果你想确切知道项目有多少错误,只需通过msbuild.exe或vbc.exe调用编译器,你就会得到答案。

自: http://blogs.msdn.com/b/vbteam/archive/2012/02/28/visual-basic-11-beta-available-for-download.aspx

结论:您仍然可以从IDE获得限制。手动运行vbc.exe以使其无限制。

注意:最新的msbuild和vbc(版本12 - 随Visual Studio一起发布)似乎再次限制为101个警告。您必须使用以前版本的构建工具(版本11 - 随.Net框架一起分发)。

答案 1 :(得分:0)

我很高兴在Visual Studio 2015(包括命令行工具和in-IDE)中报告,限制已经消失(或者至少要大得多):

screenshot of visual studio 2015 showing 250 warnings