iT邦幫忙

1

dotnet 5 console使用MessageBox.Show...會報錯???

dotnet 5 console使用MessageBox.Show...會報錯???

我建立一個範例
dotnet new console

using System;
using System.Windows.Forms;


namespace test06
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
             MessageBox.Show("Hello World");
             
        }
    }
}

她告訴我.有錯誤
https://ithelp.ithome.com.tw/upload/images/20210420/20013294g1vKiehVwI.jpg

我看之前別人寫的範例 .是可以用的??
https://ithelp.ithome.com.tw/articles/10031665

但我不知道 怎麼排除???

kondic iT邦新手 5 級 ‧ 2021-04-20 15:22:20 檢舉
你先處理好using那段是否有確實參考到吧
上網查了一些資料??還沒找到 排除的辦法
版本太新了.改舊了

2 個回答

1
純真的人
iT邦大師 1 級 ‧ 2021-04-20 15:30:05
最佳解答

參考..重大變革
從 .NET 5 開始,您無法再從機器碼存取 Windows Forms 物件。

變更描述
在舊版的 .NET 中,某些 Windows form 型別是以 COM interop 可見的形式裝飾,因此可供原生程式碼存取。 從 .NET 5 開始,COM interop 或原生程式碼無法存取任何 Windows Forms API。 .NET 執行時間不再支援建立現成的自訂類型程式庫。 此外,.NET 執行時間不能相依于 .NET Framework 的類型程式庫 (這需要在 .NET Framework) 中維護類別的形狀。

https://docs.microsoft.com/zh-tw/dotnet/core/compatibility/windows-forms/5.0/winforms-objects-not-accessible-from-native-code

dotnet core
dotnet 5
這些也不能用...

我試看看 舊版本的.NET Framework

恩恩~不要用太新版~有些網路範例會失敗@@a

我下載 net4多個版本
https://dotnet.microsoft.com/download/dotnet-framework/net48
專案 改成 .NET Framework 4.5

已經可以了

2
japhenchen
iT邦大師 1 級 ‧ 2021-04-20 15:57:13

寫個winform EXE,接受執行參數,內容就是要顯示的文字及按鈕,以winform模式呈現對話框,用戶按鍵弄個回傳值

console就能去執行exe並取得按鍵回傳,這樣可以迴避net 5及 windows net.core的改革吧

這個是好辦法喔!!!!能享受到 新的版本樂趣....讚

WinForm DLL也行,如果覺得EXE不正規的話~~

請問 WinForm DLL的使用

我剛查了 一下
dotnet myapp.dll

我要發表回答

立即登入回答