Summary
Four small build-infrastructure gaps, one issue.
- Release builds ship no symbols.
Directory.Build.props:17-20 sets DebugSymbols=False, DebugType=None for Release. For a deployed PLC-integration app whose primary diagnostic is the Serilog file, stack traces have no file/line info. Prefer DebugType=portable and either ship the PDBs or archive them per release tag.
- No
TreatWarningsAsErrors, no AnalysisLevel/EnforceCodeStyleInBuild anywhere in props/csproj. The build is currently at 0 warnings — the cheapest moment to lock that in centrally in Directory.Build.props.
InternalsVisibleTo declared two different ways: SemiStep.Core.csproj:17 uses the SDK <InternalsVisibleTo> item; SemiStep.UI.csproj:10-12 uses a manual AssemblyAttribute item. Unify on the SDK item.
AssemblyName is Semistep (visible in build output: Semistep.dll) while the product/namespaces are SemiStep. Align the casing — note this renames the published executable, so coordinate with any deploy scripts/shortcuts.
Summary
Four small build-infrastructure gaps, one issue.
Directory.Build.props:17-20setsDebugSymbols=False,DebugType=Nonefor Release. For a deployed PLC-integration app whose primary diagnostic is the Serilog file, stack traces have no file/line info. PreferDebugType=portableand either ship the PDBs or archive them per release tag.TreatWarningsAsErrors, noAnalysisLevel/EnforceCodeStyleInBuildanywhere in props/csproj. The build is currently at 0 warnings — the cheapest moment to lock that in centrally inDirectory.Build.props.InternalsVisibleTodeclared two different ways:SemiStep.Core.csproj:17uses the SDK<InternalsVisibleTo>item;SemiStep.UI.csproj:10-12uses a manualAssemblyAttributeitem. Unify on the SDK item.AssemblyNameisSemistep(visible in build output:Semistep.dll) while the product/namespaces areSemiStep. Align the casing — note this renames the published executable, so coordinate with any deploy scripts/shortcuts.