gpt4 book ai didi

c# - 在 VS2017/2019 中构建时出现 StackOverflowException

转载 作者:行者123 更新时间:2023-11-30 17:25:32 26 4
gpt4 key购买 nike

我有一个在 VS2015 中成功构建的测试项目,但是当我尝试在 VS2017/2019 中构建它时,由于 StackOverflowException 而导致构建失败。在异常发生之前打印在诊断日志中的最后语句是这样的:

使用来自目录的编译器的共享编译:C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Roslyn

我试图在 true 和 false 之间切换 UseSharedCompilation 标志,但似乎没有效果。这个问题似乎与链接的 Fluent Migrator 方法的数量有关(更多内容见下文),但我没有办法更改代码来缓解此问题。

我不太精通编译器,所以我不知道 VS2015 和更新版本之间发生了什么变化,以至于这个问题会突然出现。有人可以帮助我理解,甚至更好地给我一些傻瓜式构建建议,让我的构建在 VS2017/2019 下运行吗?

详细信息:我继承了一些与通用 dB 架构紧密耦合的软件,该架构与一组类似的应用程序共享。使用一种工具将新表和引用数据插入到数据库模式中,该工具使用一堆包含数据和元数据的 XML 文件。对于我继承的应用程序,没有测试覆盖率和大约 40k 行的 XML 内容必须通过搜索和替换以及手动检查进行更新。为了解决这些问题和相关问题,我编写了一些代码来解析 XML 文件并使用 Fluent Migrator 内容自动生成 C# 类。一些(非规范化)表有数百列,这似乎是导致 StackOverflowException 的特定问题。编译器似乎能够处理大约 200 个 .WithColumn 调用,但除此之外它就会崩溃。除以下内容外,简要说明。我提到这一点只是为了提供有关该问题的背景信息,并解释为什么我正在做我正在做的事情。

.WithColumn(nameof(ColumnDescriptions.XXX)).AsString(100).NotPublishedOffline().WithColumnDescription(ColumnDescriptions.XXX)
//.WithColumn(nameof(ColumnDescriptions.YYY)).AsString(100).NotPublishedOffline().WithColumnDescription(ColumnDescriptions.YYY)

最佳答案

我相信这是一个已知的 Roslyn 错误,当将许多流畅的调用链接在一起时:https://github.com/dotnet/roslyn/issues/9795

来自 another answer解决方法似乎是将流畅的调用拆分为多个语句:

例如:

var result = x.WithColumn(nameof(ColumnDescriptions.XXX)).AsString(100).NotPublishedOffline().WithColumnDescription(ColumnDescriptions.XXX)

可以分解成

var temp = .WithColumn(nameof(ColumnDescriptions.XXX)).AsString(100)
var result = temp.NotPublishedOffline().WithColumnDescription(ColumnDescriptions.XXX)

关于c# - 在 VS2017/2019 中构建时出现 StackOverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58437064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com