1

我刚刚将我的 VS2019 社区版更新到了 16.7.2 版。我的项目开始无法构建(可能是链接步骤?)并出现此错误(以前构建得很好,我认为在 v16.6.something 上):

> Severity  Code    Description Project File    Line    Suppression State
> Error MSB6006 "csc.exe" exited with code
> -2146232797.  MyProject.Server    C:\Program Files\dotnet\sdk\3.1.401\Sdks\Microsoft.NET.Sdk.Razor\build\netstandard2.0\Microsoft.NET.Sdk.Razor.Component.targets 179

我真的不知道如何弄清楚发生了什么。接下来我可以看什么?我应该在其他地方问这个问题吗?

我在我的 Windows 事件日志中发现了这一点。它似乎是一个调用堆栈:

> Application: csc.exe Framework Version: v4.0.30319 Description: The
> application requested process termination through
> System.Environment.FailFast(string message). Message:
> System.NullReferenceException: Object reference not set to an instance
> of an object. at
> Microsoft.CodeAnalysis.CodeGen.ILBuilder.BasicBlock.ShortenBranches(Int32&
> delta) at
> Microsoft.CodeAnalysis.CodeGen.ILBuilder.ComputeOffsetsAndAdjustBranches()
> at Microsoft.CodeAnalysis.CodeGen.ILBuilder.RealizeBlocks() at
> Microsoft.CodeAnalysis.CodeGen.ILBuilder.Realize() at
> Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(PEModuleBuilder
> moduleBuilder, MethodSymbol method, Int32 methodOrdinal,
> BoundStatement block, ImmutableArray`1 lambdaDebugInfo,
> ImmutableArray`1 closureDebugInfo, StateMachineTypeSymbol
> stateMachineTypeOpt, VariableSlotAllocator variableSlotAllocatorOpt,
> DiagnosticBag diagnostics, DebugDocumentProvider
> debugDocumentProvider, ImportChain importChainOpt, Boolean
> emittingPdb, Boolean emitTestCoverageData, ImmutableArray`1
> dynamicAnalysisSpans, AsyncForwardEntryPoint entryPointOpt) at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol
> methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers&
> processedInitializers, SynthesizedSubmissionFields
> previousSubmissionFields, TypeCompilationState compilationState) at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol
> containingType) at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0()
> Stack: at System.Environment.FailFast(System.String, System.Exception)
> at Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception)
> at
> Microsoft.CodeAnalysis.FatalError.ReportUnlessCanceled(System.Exception)
> at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0()
> at
> Microsoft.CodeAnalysis.CodeGen.ILBuilder+BasicBlock.ShortenBranches(Int32
> ByRef) at
> Microsoft.CodeAnalysis.CodeGen.ILBuilder.ComputeOffsetsAndAdjustBranches()
> at Microsoft.CodeAnalysis.CodeGen.ILBuilder.RealizeBlocks() at
> Microsoft.CodeAnalysis.CodeGen.ILBuilder.Realize() at
> Microsoft.CodeAnalysis.CSharp.CodeGen.CodeGenerator.GenerateImpl() at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler.GenerateMethodBody(Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder,
> Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32,
> Microsoft.CodeAnalysis.CSharp.BoundStatement,
> System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo>,
> System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo>,
> Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol,
> Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator,
> Microsoft.CodeAnalysis.DiagnosticBag,
> Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider,
> Microsoft.CodeAnalysis.CSharp.ImportChain, Boolean, Boolean,
> System.Collections.Immutable.ImmutableArray`1<Microsoft.CodeAnalysis.CodeGen.SourceSpan>,
> AsyncForwardEntryPoint) at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,
> Int32, ProcessedFieldInitializers ByRef,
> Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields,
> Microsoft.CodeAnalysis.CSharp.TypeCompilationState) at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol)
> at
> Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass22_0.<CompileNamedTypeAsync>b__0()
> at
> Roslyn.Utilities.UICultureUtilities+<>c__DisplayClass5_0.<WithCurrentUICulture>b__0()
> at System.Threading.Tasks.Task.Execute() at
> System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext,
> System.Threading.ContextCallback, System.Object, Boolean) at
> System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext,
> System.Threading.ContextCallback, System.Object, Boolean) at
> System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task
> ByRef) at System.Threading.Tasks.Task.ExecuteEntry(Boolean) at
> System.Threading.ThreadPoolWorkQueue.Dispatch()
4

3 回答 3

0

Windows 版本更新后,我在构建服务器上遇到了这个问题。

c:\program files (x86)\microsoft visual studio\2019\buildtools\msbuild\current\bin\Roslyn\Microsoft.CSharp.Core.targets(70,5): error MSB6006: "csc.exe" exited with code - 2146232576。

最终对我来说,我获取了 Microsoft.CSharp.Core.targets 的第 70 行的输出,基本上是 csc.exe 的命令行及其所有命令行参数,并从命令行运行它

这时弹出一个对话框,说我需要.net Framework 4.7.2!!! 示例 4.7.2 错误对话框

以下是调试隐藏 csc.exe 错误的方法:

  1. 使用 /verbosity:diag 运行 msbuild并将输出发送到文件

    msbuild my.sln /verbosity:diag > output.txt

  2. 通过在失败的目标上搜索字符串“ FAILED. ”来查找控制台输出中的第一个错误并确定目标名称和任务 ID(在示例中 TaskId 为431

任务 ID 示例

  1. 在诊断跟踪中向上扫描以查找您在上面确定的目标任务 id 的输出,该目标的所有输出都标有该目标的任务 id,看到有什么异常吗?

  2. 如果您的构建在其他机器上运行,则在两者上运行诊断跟踪(参见步骤 1)并将两者与 WinMerge 之类的工具进行比较

  3. 打开目标文件并查看出错的行,行​​号显示在错误旁边的括号中,在下面的示例中为第 70 行,

    Microsoft.CSharp.Core.targets( 70 ,5):错误 MSB6006:“csc.exe”

  4. 然后打开目标并检查它,它试图做什么?它是否为您提供任何可能出错的线索?你能复制它试图做的事情吗?

于 2020-12-17T17:59:28.883 回答
0

堆栈跟踪说System.NullReferenceException: Object reference not set to an instance of an object.

您是否尝试在 VS 中本地运行该应用程序并对其进行调试?

于 2020-08-25T07:16:56.080 回答
0

我的问题是关于如何调查。这是我所做的,希望对其他人有所帮助。

  1. 开始从我的项目中删除代码,一次一个文件,直到找到有问题的文件。
  2. 把那个文件放回去,开始一次删除一个函数体,直到找到有问题的那个。
  3. 注释掉部分有问题的函数,直到我发现有问题的代码。
  4. 创建一个新的控制台应用程序并粘贴有问题的代码。
  5. 按照此处所述向 Microsoft 报告问题:https ://docs.microsoft.com/en-us/visualstudio/ide/how-to-report-a-problem-with-visual-studio?view=vs-2019

对于它的价值,这是我报告的问题: https ://developercommunity.visualstudio.com/content/problem/1162150/vs2019-cscexe-bug-with-switch-statement.html

(如果您在 Stack Overflow 中搜索类似问题,您可能会遇到与我相同的问题,但似乎此错误通常是“您编写了我们甚至无法编译的代码。”......希望上面的步骤可以帮助你。)

于 2020-08-25T17:39:42.810 回答