最近想把ET打表工具的報錯提示直接調用win系統彈窗,好讓策劃明顯的知道表格哪裡填錯數據,彈窗需要調用System.Windows.Forms庫。操作如下: 需要在 .csproj 文件中添加: <UseWindowsForms>true</UseWindowsForms> 須將目標平臺設置為 Wi ...
最近想把ET打表工具的報錯提示直接調用win系統彈窗,好讓策劃明顯的知道表格哪裡填錯數據,彈窗需要調用System.Windows.Forms庫。操作如下:
需要在 .csproj 文件中添加:
<UseWindowsForms>true</UseWindowsForms>
須將目標平臺設置為 Windows
修改之後,還是報錯:
如果使用 Windows 窗體或 WPF,或者引用使用 Windows 窗體或 WPF 的項目或包,則必須將目標平臺設置為 Windows
需將 .csproj 文件中的
<TargetFramework>net8.0</TargetFramework>
修改為:
<TargetFramework>net8.0-windows</TargetFramework>
修改後的 .csproj 文件
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0-windows</TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> </Project>
打表拋異常/控制台顯示報錯的地方改成彈窗提示即可
EmitResult emitResult = compilation.Emit(memSteam); if (!emitResult.Success) { StringBuilder stringBuilder = new StringBuilder(); foreach (Diagnostic t in emitResult.Diagnostics) { stringBuilder.AppendLine(t.GetMessage()); } MessageBox.Show($"動態編譯失敗:\n{stringBuilder}"); throw new Exception($"動態編譯失敗:\n{stringBuilder}"); } memSteam.Seek(0, SeekOrigin.Begin);
再次執行
dotnet run
就能正常運行了,可以看到彈窗信息。