VS Code+.Netでアプリを作る(No.3):Windows.Formsを使ってアプリを作る
やっと、プログラミングができる。

プロジェクトを見てみると、プロジェクトルートに以下2ファイルがある。
●msbox.csproj
●Program.cs
ここで疑問がある。
System.Windows.FormsからMessageBoxが連想できるのか?
これはもう、.Net Core APIのドキュメントを読んでSystem.Windows.Formsにどんなクラスがあるのか覚えるしかなさそうだ。
デバッグ開始
デバッグ時には、以下2ファイルが必要。
- launch.json
F5(デバッグ開始)を押下すると作成される。
"program": ....."<insert-target-framework-here>/<insert-project-name-here>.dll"の部分を以下の通り変更する。
- tasks.json
改めてF5(デバッグ開始)すると、以下のポップアップが表示される。

ここで"Configure Task"を選択。

"Create tasks.json file from template"を選択。
tasks.jsonのテンプレートを作ってくれるらしい。

".NetCore Executes .Net Core build commands"を選択すればいい。
ここで、ふと気づく。outputがexeファイルなのにLinuxで動くのかと。
案の定、エラーだ。
/usr/share/dotnet/sdk/3.1.300/Microsoft.Common.CurrentVersion.targets(1177,5): error MSB3644: .NETFramework,Version=v4.7.2 の参照アセンブリが見つかりませんでした。この問題を解決するには、このフレームワーク バージョンの Developer Pack (SDK/Targeting Pack) をインストールするか、アプリケーションのターゲットを再設定してください。https://aka.ms/msbuild/developerpacks で .NET Framework Developer Pack をダウンロードできます。 [/home/keisuke/dotnet/msbox/msbox.csproj]
The terminal process terminated with exit code: 1
気を取り直して、コンソールアプリを作る。(※ここを参照)
$ dotnet new console -n TestConsole
$ cd TestConsole
$ dotnet run
Hello World!
今日は、これで幸せ。
参考:

プロジェクトを見てみると、プロジェクトルートに以下2ファイルがある。
- Program.cs
- msbox.csproj
●msbox.csproj
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net472</TargetFramework> </PropertyGroup> <ItemGroup> <Reference Include="System.Windows.Forms"> </ItemGroup> </Project>
●Program.cs
using System; using System.Windows.Forms; namespace msbox { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); MessageBox.Show("!! Hello World !!"); } } }
ここで疑問がある。
System.Windows.FormsからMessageBoxが連想できるのか?
これはもう、.Net Core APIのドキュメントを読んでSystem.Windows.Formsにどんなクラスがあるのか覚えるしかなさそうだ。
デバッグ開始
デバッグ時には、以下2ファイルが必要。
- launch.json
- tasks.json
- launch.json
F5(デバッグ開始)を押下すると作成される。
"program": ....."<insert-target-framework-here>/<insert-project-name-here>.dll"の部分を以下の通り変更する。
{ "version": "0.2.0", "configurations": [ { "name": ".NET Core Launch (console)", "type": "coreclr", "request": "launch", "preLaunchTask": "build", "program": "${workspaceFolder}/bin/Debug/net472/msgbox.exe", "args": [], "cwd": "${workspaceFolder}", "console": "internalConsole", "stopAtEntry": false }, { "name": ".NET Core Attach", "type": "coreclr", "request": "attach", "processId": "${command:pickProcess}" } ] }
- tasks.json
改めてF5(デバッグ開始)すると、以下のポップアップが表示される。

ここで"Configure Task"を選択。

"Create tasks.json file from template"を選択。
tasks.jsonのテンプレートを作ってくれるらしい。

".NetCore Executes .Net Core build commands"を選択すればいい。
ここで、ふと気づく。outputがexeファイルなのにLinuxで動くのかと。
案の定、エラーだ。
/usr/share/dotnet/sdk/3.1.300/Microsoft.Common.CurrentVersion.targets(1177,5): error MSB3644: .NETFramework,Version=v4.7.2 の参照アセンブリが見つかりませんでした。この問題を解決するには、このフレームワーク バージョンの Developer Pack (SDK/Targeting Pack) をインストールするか、アプリケーションのターゲットを再設定してください。https://aka.ms/msbuild/developerpacks で .NET Framework Developer Pack をダウンロードできます。 [/home/keisuke/dotnet/msbox/msbox.csproj]
The terminal process terminated with exit code: 1
気を取り直して、コンソールアプリを作る。(※ここを参照)
$ dotnet new console -n TestConsole
$ cd TestConsole
$ dotnet run
Hello World!
今日は、これで幸せ。
参考:
- .Net Coreドキュメント System.Windows.Forms
- First contact with .Net Core 3 and Visual Studio Code on Linux Ubuntu
コメント
コメントを投稿