今天試了一下在.net 5控制台程序中使用桌面類庫, 發現遇到了一些障礙。雖然在.net 5中引用桌面庫比較簡單,只要在csproj文件中將TargetFramework改為"net5.0-windows",並且把UseWindowsForms設置為"true"即可。
<TargetFramework>net5.0-windows</TargetFramework> <UseWindowsForms>true</UseWindowsForms>
執行一個簡單的示例:
static void Main(string[] args)
{
MessageBox.Show("hello world");
Console.WriteLine("Hello World!");
}
運行的時候卻發現,雖然對話框能很好的顯示出來,但是卻沒有控制台窗口。將TargetFramework或者UseWindowsForms改回去后,就編譯報錯,不支持引用桌面類庫。最后,網上搜了一下,找到了如下解決方案: 在csproj文件中,添加DisableWinExeOutputInference並設置為"true"即可。
<TargetFramework>net5.0-windows</TargetFramework> <UseWindowsForms>true</UseWindowsForms> <DisableWinExeOutputInference>true</DisableWinExeOutputInference>
此外,我還發現了一個間接的方法:把UseWindowsForms設置為"false",引用別的工程,通過調用別的程序集中的方法一樣可以在顯示控制台窗口的方式下,調用桌面類庫。