vbc.exe退出,代码为-2146232797

时间:2015-11-12 01:56:07

标签: vb.net visual-studio-2015 vbc

我正在将具有多个项目的解决方案移至VS 2015.基础项目在VS 2013中构建得很好。但是当我尝试在VS 2015中构建时,我得到以下错误。

  

C:\ Program Files(x86)\ MSBuild \ 14.0 \ bin \ Microsoft.VisualBasic.Core.targets(56,5):错误MSB6006:“vbc.exe”已退出,代码为-2146232797.

需要帮助

12 个答案:

答案 0 :(得分:7)

我与MS Tech Support进行了交谈。它是VB编译器中确认的错误。他们说它将在下次更新时修复。

与此同时,解决方法是安装Nuget包。

请按照这些说明安装Nuget包。

  1. 在Visual Studio中打开受影响的项目

  2. 打开包管理器控制台(工具 - > NuGet包管理器 - > 包管理器控制台)

  3. 运行:

    Install-package Microsoft.Net.Compilers -version 1.1.1
    

答案 1 :(得分:3)

我有一个大型解决方案,在更新到VS 2015 Update 1 RTM后无法构建。在我的情况下,有一些警告

  

导入'<导入名称>'中指定的命名空间或类型不包含任何公共成员或无法找到。确保定义了名称空间或类型,并且至少包含一个公共成员。确保导入的元素名称不使用任何别名。

发生在" vbc.exe"之前坠毁。一旦我删除了那些额外的,不必要的Imports,解决方案就可以正确构建。

答案 2 :(得分:2)

最新的Visual Studio 2015服务更新已解决此问题。相关下载为KB 3110221,在this KB article中讨论。

答案 3 :(得分:2)

就我而言,我发现导入导致了这个问题。具体来说,在尝试了很多其他建议后,从文件中删除了Microsoft.Office.Interop.Excel导入,最后让我的项目构建完成。

答案 4 :(得分:1)

将Update 1安装到VS 2015后,我遇到了同样的问题。

我已经下载了Brian King在他的回答中建议的Microsoft.Net.Compilers NuGet包。这解决了一个项目的问题。然后:

“c:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ vbc.exe”的版本为1.1.0.51109 ... userprofile.nuget \ packages \ Microsoft.Net.Compilers \ 1.1.1 \ tools \ vbc.exe的版本高于1.1.0.51202

所以我将整个“1.1.1 \ tools”目录复制到“14.0 \ Bin”目录中并覆盖了27个现有文件。

这为所有项目修复了它。请记住在执行此操作之前创建备份。

答案 5 :(得分:1)

在尝试Microsoft.Net.Compilers -version 1.1.1和KB3110221之后,我的解决方案仍然无法使用相同的错误进行编译。直到后来我才注意到这个错误伴随着一个警告,让我知道解决方案引用的一个库是针对 .NET Framework 4.5.2 编译的,而我的解决方案是针对 .NET Framework 4.5 。我针对 .NET Framework 4.5 重新编译了所述库,解决方案编译得很好。

现在我的问题在尝试了三个修复后得到了解决,我无法分辨最后一个是否已经完成,但我希望它会有所帮助。

答案 6 :(得分:1)

我通过打开所有.vb文件来删除额外的导入来修复此问题。对所有文件执行此操作,然后重建。这应该有用。

答案 7 :(得分:1)

由于我失去了与MS签订的许可分歧,我在安装vs2015后立即开始这样做了。 : - (

刚回去工作,我遇到了这个问题。

我尝试过Brien King建议的NUGET。问题持续存在。 我试过做Teodor Constantinescu建议的KN。问题持续存在。

我尝试了一个新的琐碎的网络应用程序,事情很好,所以我没有卸载vs2013或vs2015。

我选择备份我的项目(3次,一次放在我放在另一个房间的usb棒上)并删除文件组并在每组拔出后编译。 最终,当我接近结束时(几乎是一个空项目),它编译。<​​/ p>

通过添加文件组,我确定了导致此问题的单个文件。我可以通过取消注释一行来重新创建该问题。

进一步评论代码,我将问题分为4行代码。美丽。 解释是这个......

我有两个引用ssrs的网络参考

目前我的项目定义为 SSRS_reportservice2010 和SSRS_ReportExecution2005

我努力让这些工作,所以随着时间的推移,我有不同的名字,因为我删除并读取了网络参考。 (学徒)

无论出于何种原因,一个已排除的文件,今天已包含(2013年 - &gt; 2015年问题,或greg鼠标放屁问题?我们永远不会知道)

在那个(错误包含的)文件中,有一对旧的引用

'1 Imports SSRS_ReportingService2010
'2 Imports SSRS = SSRS_ReportingService2010
'3 Imports SSRS_ReportExecution
'4 Imports SSRS_E = SSRS_ReportExecution

第1行用于引用我的应用程序中现在命名为SSRS_reportservice2010的WS 您可以取消注释,并编译和运行。请注意,您确实收到一条引用空命名空间的警告。

第2行当然是长名称的别名,因为我是一个非常懒惰的人,加上我坚持我的代码是可读的,长名字臭恕恕我直言。

第2行,如果取消注释,则导致vbc错误-2146232797 请注意,取消注释2或1&amp; 2导致错误。它的一些关于导致编译器upchuck的坏别名。

对第3和第4行重复上述讨论,这些讨论与名为SSRS_ReportExecution2005的webservice当前有关

所以你有它。 这花了我8个小时来调试。希望它可以帮助某人。

许多其他帖子,评论等也提到了导入/使用语句。 root bug可能就在那里......(是的,这是编译器中的一个bug)

PS - 有趣的是,有问题的文件的名字是以W开头的,所以是第一个出来的人。 当我把这个文件全部带出项目时没有任何改进。

我无法解释为什么在我拿出违规文件后应用程序没有编译。 我可以提议我在这个过程中很晚才拿出网络服务,我只是觉得它们不是问题。

令我感到困惑的是,文件可能已经消失,我现在仍然可以解决这个问题,现在我可以简单地评论4行,并且事情完美无缺。

答案 8 :(得分:1)

为第二个答案道歉,但这个答案要简单得多。 上次8天后,我又在另一个项目中收到了错误。

这一次,我通过给一个更好的名字开始这一天。 我有一个名为 conversionFactors 的类,我将该类重命名为 常量 ,以更好地表示该类所持有的内容。

立刻得到了错误 vbc.exe“退出,代码为-2146232797..SizingEngine

追踪到这条线。我应该使用重命名实用程序。是。没有争论。编译器也应该更健壮。 Tsk tsk微软。

Imports cf = SizingEngine.conversionFactors

所以重现的步骤 1.创建一个新项目 2.创建一个名为Foo的类 3.创建一个名为Bar的类

    在栏中
  1. ,添加以下行

    import bar_ = project1.NoClassByThisNameExists

  2. 点击f5

  3. 听听pac man萎靡的声音
  4. ps - VS今天不会报告任何可供下载的更新。我相信这会在某个时候得到修复。

答案 9 :(得分:0)

我刚刚遇到同样的问题。我的成功是因为有一个班里面有一个事件。我在另一个类中将此引用为共享属性。共享属性导致编译器失败。我删除了&#34;共享&#34;声明,它现在编译好了

答案 10 :(得分:0)

当我遇到一个抛出错误的post build事件时,我遇到了这个错误。 没有迹象表明这是问题,只是-2146232797错误。

因此,请在项目的属性页中进行检查。转到编译 - &gt;构建事件...并检查构建后事件命令行字段。我想这可能发生在Pre-build事件中,所以也要检查一下。

答案 11 :(得分:-1)

问题可能与.NET Framework中的一些使用函数有关。尝试将项目框架更改为4.0并查看问题是否仍然存在。