Q:

Trouble with initial distribution of C# .NET application

I've written an application in C# .NET with the WinForms UI toolkit.  I'm attempting to provide Windows executables, but so far they simply don't work for anyone but me.
I'm creating the release packages by building the EXE and DLLs in Visual Studio 2017, copying them into one place, and putting that into a .zip archive.  I'm not doing the fancy one-click publishing stuff.
The project is available on github (https://github.com/fadden/6502bench).  The first person to try it got "<program> has stopped working" on Win7 (see issue).  The second person was using Win10 Pro, and extracted some details from the event log that show it crashing in a system DLL (see issue).  Both of them have the latest .NET framework installed.
I haven't worked with C# .NET outside Unity, so I'm a bit out of my depth.  It's entirely possible I've skipped an "obvious" step, or am doing things wrong.
Update: answering some of the comments:

it's pure C#, no native or unsafe code
both people reporting problems confirmed that that latest .NET framework is installed (4.7.2)
the program doesn't seem to be starting at all, so I'm not sure what the app could be doing wrong as far as local paths go
the specific errors, including screen shots and log messages, are included in the issues linked above
the full source code, with the VS solution and projects, is up on github

The sense I'm getting from the comments is that what I'm doing isn't fundamentally wrong, so there's some devil in the details.

A:

I downloaded the source, and debugged.
I received a StackOverFlowException on the following 2 lines of code.
ProjectView.cs
line 3545 : symbolListView.Columns[2].Width = lastWidth;
line 3719 : referencesListView.Columns[2].Width = lastWidth;
What is going on is you are handling the ColumnWidthChanged event on ListView components, and modifying the column width.  This modification fires the event again, which is causing an infinite loop, and a subsequent StackOverflowException.

But why? I'll take a swing at an answer. You may have hard coded some values that line up with the DPI and resolution of your monitor.  When the ListView instantiates on your machine, it doesn't have to 'redraw' the column with and does not fire the event, but for anyone else that doesn't have the same resolution and DPI, the event fires and causes the loop. I could be wrong, but sounds plausible to me.

