プロジェクトの中身
.vbprojには対象フレームワークやコンパイル設定がXMLで記録されます。Program.vb以外の.vbファイルも通常は自動でコンパイル対象になります。
Shop.vbprojの例XML
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>Shop</RootNamespace>
<OptionStrict>On</OptionStrict>
</PropertyGroup>
</Project>OptionStrictは既定でOffのため、この講座ではOnを明示します。危険な暗黙変換などをコンパイル時に検出できます。binとobjは生成物なので通常Gitへ登録せず、ソースと.vbprojを登録します。
ソリューションでまとめる
アプリ本体とテストなど複数プロジェクトをまとめて操作できます。
作成例COMMAND
dotnet new sln -n Shop
dotnet new console -lang VB -o Shop
dotnet new mstest -lang VB -o Shop.Tests
dotnet sln Shop.sln add Shop Shop.Tests
dotnet add Shop.Tests reference Shop
dotnet test Shop.sln役割
Shop:実際の処理Shop.Tests:期待する動作を確認するテストShop.sln:両方をまとめる一覧
NuGetパッケージを使う
NuGetは.NETのパッケージ管理です。追加前に正確な名前、公開元、利用条件、保守状況を確認します。
基本コマンドCOMMAND
dotnet add package PackageName
dotnet list package
dotnet restore
dotnet remove package PackageName追加するとPackageReferenceがプロジェクトファイルへ記録され、別環境でもdotnet restoreで復元できます。
むやみに増やさない .NET標準ライブラリで十分なら追加は不要です。依存関係には更新や脆弱性対応も必要になります。
ビルド、テスト、発行
確認の流れCOMMAND
dotnet format --verify-no-changes
dotnet build --configuration Release
dotnet test --configuration Release
dotnet publish --configuration Releasebuildは実行可能な形へ変換し、testは自動テストを実行します。publishは配布用ファイルをまとめます。公開先のOSや.NETランタイムの有無に応じて発行方法を選びます。
設定と秘密情報を分ける
接続文字列やAPIキーをソースコードへ直接書くと履歴へ残ります。開発時は環境変数などを使い、リポジトリには値ではなく必要な設定名だけを文書化します。
環境変数を読むVISUAL BASIC
Dim apiKey As String = Environment.GetEnvironmentVariable("SHOP_API_KEY")
If String.IsNullOrWhiteSpace(apiKey) Then
Console.WriteLine("SHOP_API_KEYが設定されていません")
End If未設定時OUTPUT
SHOP_API_KEYが設定されていませんミニ課題:アプリとテストを分ける
買い物合計を計算するクラスをアプリプロジェクトへ置き、テストプロジェクトから参照してください。通常値、0円、負の値をテストし、ソリューション単位でdotnet buildとdotnet testを成功させます。