【问题标题】:vbc.exe exited with code -2146232797vbc.exe 退出,代码为 -2146232797
【发布时间】:2017-04-01 02:48:25
【问题描述】:

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

C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.VisualBasic.Core.targets(56,5): error MSB6006: "vbc.exe" exited with code -2146232797。

需要帮助

【问题讨论】:

  • 它决定使用 Environment.FailFast() 结束这一天。如果您在“输出”窗口中看不到任何内容,没人能告诉您原因。如果这发生在“hello world”项目中,那么您需要让您的机器再次恢复健康。如果它只是一个特定的项目,那么您需要注释掉代码块以缩小范围。
  • 我现在发生了同样的错误。我昨晚将 Visual Studio 2015 升级到 Update 1,现在我的项目将不再编译。在更新 1 之前,它在 Visual Studio 2015 中运行良好。有人对此有任何建议吗?

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


【解决方案1】:

我与 MS 技术支持进行了交谈。这是 VB 编译器中已确认的错误。他们说它将在下一次更新中修复。

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

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

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

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

  3. 运行:

    Install-package Microsoft.Net.Compilers -version 1.1.1
    

【讨论】:

  • 我有一个项目(在 17 个解决方案中)一直编译良好,直到我安装了 VS 2015 更新 1,然后我们开始出现 vbc.exe 崩溃。为该项目安装上面的 Nuget 包已经奏效 - 但似乎并不理想。
  • 这并不理想,他们说它会在下一个版本中修复......当那是......
  • 我不知道如何或为什么,但这帮助我在我的 Ubuntu 机器上使用 .NET Framework 4.5 VB.net 时解决了同样的编译异常。 =)
【解决方案2】:

我有一个大型解决方案在更新到 VS 2015 Update 1 RTM 后构建失败。就我而言,有许多警告

导入“”中指定的命名空间或类型不包含任何公共成员或找不到。确保命名空间或类型已定义并包含至少一个公共成员。确保导入的元素名称不使用任何别名。

这发生在“vbc.exe”崩溃之前。一旦我删除了那些额外的、不必要的导入,解决方案就会正确构建。

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 遗憾的是,这只修复了一些特定问题。安装此补丁后,我仍然收到此确切消息。
    【解决方案4】:

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

    【讨论】:

      【解决方案5】:

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

      我已经按照 Brien 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 个现有文件。

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

      【讨论】:

        【解决方案6】:

        在尝试了 Microsoft.Net.Compilers -version 1.1.1 和 KB3110221 之后,我的解决方案仍然无法编译并出现相同的错误。直到后来我才注意到该错误伴随着一个警告,它让我知道解决方案引用的库之一是针对 .NET Framework 4.5.2 编译的,而我的解决方案是针对 编译的>.NET 框架 4.5。我针对 .NET Framework 4.5 重新编译了上述库,并且解决方案编译良好。

        现在我的问题在尝试了三个修复后得到了解决,我不知道最后一个是否可以解决,但我希望它会有所帮助。

        【讨论】:

          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

            由于与 MS 的许可分歧,我在安装 vs2015 后立即开始得到这个,我输了。 :-(

            刚复工,遇到这个问题。

            我尝试执行 Brien King 建议的 NUGET。问题依然存在。 我尝试做 Teodor Constantinescu 建议的 KN。问题依然存在。

            我尝试了一个新的微不足道的网络应用程序,一切都很好,所以我没有卸载 vs2013 或 vs2015。

            我选择备份我的项目(3 次,一次在我放在另一个房间的 U 盘上)并删除文件组并在每个组被拉出后编译。 最终,当我接近尾声时(几乎是一个空项目),它编译了。

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

            进一步注释掉代码,我将问题隔离为 4 行代码。美丽的。 解释是这样的……

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

            这些目前在我的项目中定义为 SSRS_reportservice2010 和 SSRS_ReportExecution2005

            我很难让这些工作,所以随着时间的推移,当我删除和阅读网络参考时,我有了不同的名字。 (学徒)

            无论出于何种原因,一个被排除在外的文件,今天却被包含在内(2013--> 2015 年问题,还是 greg mouse 放屁问题?我们永远不会知道)

            在那个(错误包含的)文件中,有一对旧的参考资料

            '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 & 2 会导致错误。它与导致编译器升级的错误别名有关。

            在第 3 行和第 4 行重复上述讨论,这与名为 SSRS_ReportExecution2005 的 web 服务当前有关

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

            许多其他帖子、cmets 等也提到了导入/使用语句。根本错误可能就在其中的某个地方....(是的,这是编译器中的错误)

            PS - 有趣的是,有问题的文件的名称以 W/W 开头,因此是最先出现的文件之一。
            当我把那个文件从项目中取出时,没有任何改善。

            我无法解释为什么在我取出有问题的文件后应用程序没有编译。 我可以提出,我在这个过程中很晚才取消了网络服务,我只是不认为它们是问题所在。

            让我感到困惑的是,文件可能已经消失了,当我现在可以简单地注释掉 4 行并且一切正常时,我仍然遇到问题。

            【讨论】:

              【解决方案9】:

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

              这一次,我通过给一个班级起一个更好的名字来开始新的一天。 我有一个名为 conversionFactors 的类,我将该类重命名为 constants 以更好地表示该类的内容。

              立即得到错误 vbc.exe”退出,代码为-2146232797。SizingEngine

              追踪到这一行。我应该使用重命名实用程序。是的。没有争论。编译器也应该更健壮。啧啧微软。

              Imports cf = SizingEngine.conversionFactors
              

              复制步骤 1.新建项目 2.创建一个名为Foo的类 3.创建一个名为Bar的类

              1. 在Bar中,添加以下行

                导入 bar_ = project1.NoClassByThisNameExists

              2. 点击 f5

              3. 听 pac man 枯萎的声音

              ps - VS 今天没有报告任何可供下载的更新。我相信这会在某个时候得到解决。

              【讨论】:

                【解决方案10】:

                我也遇到了同样的问题。我的原因是有一堂里面有一个事件。我在另一个类中将其引用为共享属性。共享属性导致编译器失败。我删除了“共享”声明,现在可以正常编译了

                【讨论】:

                  【解决方案11】:

                  当我有一个引发错误的构建后事件时,我遇到了这个错误。 没有迹象表明这是问题所在,只是出现了 -2146232797 错误。

                  所以在项目的属性页中检查这个。转到 Compile -> Build Events ... 并检查 Post-build event 命令行字段。我想这可能发生在 Pre-build 事件中,所以也要检查一下。

                  【讨论】:

                    【解决方案12】:

                    此问题可能与 .NET Framework 中的某些使用功能有关。尝试将项目框架更改为4.0,看看问题是否仍然存在。

                    【讨论】:

                    • 感谢您的建议,但该项目已设置为 .Net 4.0。我尝试将其切换到 .Net 4.5,然后再切换回来,但同样的问题仍然存在。
                    • 你的 VS2015 是最新的吗(我猜是 Service Pack 5)?
                    • VS2013 升级到 Service Pack 5。VS2015 刚出来。我认为现在 CTP 中有一个服务包,但它还不是 RTM。
                    • 更新:VS2015 SP1 现在是 RC。
                    • 操作!是的,我与 VS2013 混淆了。可能问题与此有关。
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-08-11
                    • 2013-08-17
                    • 1970-01-01
                    • 2021-05-08
                    • 2014-04-28
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多