我已经使用WinForms UI工具包在C#.NET中编写了一个应用程序。我正在尝试提供Windows可执行文件,但到目前为止,它们只对我有用。
我通过在Visual Studio 2017中构建EXE和DLL,然后将它们复制到一个位置,然后将其放入.zip存档中来创建发行包。我没有做花哨的一键式发布工作。
该项目位于github(https://github.com/fadden/6502bench)上。第一个尝试使用Win7(see issue)的人“ <程序>停止工作”。第二个人正在使用Win10 Pro,并从事件日志中提取了一些详细信息,表明它在系统DLL(see issue)中崩溃。他们两个都安装了最新的.NET框架。
我还没有在Unity之外使用C#.NET,所以我有点不了解。我完全有可能跳过了“显而易见的”步骤,或者做错了事。
更新:回答一些评论:
我从评论中得到的感觉是我在做的事情根本上不是错的,所以细节上有些恶魔。
答案 0 :(得分:0)
我下载了源代码并进行了调试。
在以下两行代码中,我收到了StackOverFlowException
。
line 3545
:symbolListView.Columns[2].Width = lastWidth;
line 3719
:referencesListView.Columns[2].Width = lastWidth;
这是在处理ColumnWidthChanged
组件上的ListView
事件,并修改列宽。此修改会再次触发该事件,从而导致无限循环和随后的StackOverflowException
。
但是为什么呢?我将摇摆不定。您可能已经硬编码了一些与显示器的DPI和分辨率相匹配的值。当ListView
在您的计算机上实例化时,它不必使用来“重绘”列也不触发事件,但是对于没有相同分辨率和DPI的其他任何人,事件都将触发并导致循环。我可能错了,但听起来对我来说似乎很合理。