Day After Day
tsurezure naru mamani...
ANOTHER DECADE

from 2022 when it's begining after/with CORONA Virus.

C#の開発環境もVSCodeで (build, run, publish)

7月
25
2024
Back
Alt+HOME


VSCodeの環境では、Visual Studio IDEのように発行などのGUIは無いので、dotnetコマンドで行う。

build と run の復習


    PowerShell又はVSCodeの最下部のタブ[ターミナル]にて次のようなコマンドを実行すると、アプリが立ち上がりフォームが表示される。 ただし、前回のアイコンやイメージが所定の場所にない場合やパスの記述に間違いが有った場合はエラーもフォームも表示されず終了する。

    PS X:\TLMForwarder> dotnet build
      Determining projects to restore...
      復元対象のすべてのプロジェクトは最新です。
      TLMForwarder -> X:\TLMForwarder\Debug\net8.0-windows\win-x64\TLMForwarder.dll
    
    ビルドに成功しました。
        0 個の警告
        0 エラー
    
    経過時間 00:00:01.65
    PS X:\TLMForwarder> dotnet run
    	

リリース版の発行はどうする (publish)


  1. では、Visual Studio IDE に備わっている[発行]はメニューにも無い、どうするのだろう。

  2. dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained false
      Determining projects to restore...
      復元対象のすべてのプロジェクトは最新です。
      TLMForwarder -> X:\TLMForwarder\bin\Release\net8.0-windows\win-x64\TLMForwarder.dll
      TLMForwarder -> X:\TLMForwarder\bin\Release\net8.0-windows\win-x64\publish\
    	

  3. Visual Studio の場合は発行先のフォルダが指定できた。似たような事をやってみる。

  4.  dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained false -o c:/users/USER/desktop/TLMForwarder
      Determining projects to restore...
      復元対象のすべてのプロジェクトは最新です。
    C:\Program Files\dotnet\sdk\8.0.302\Current\SolutionFile\ImportAfter\Microsoft.NET.Sdk.Solution.targets(36,5): warning
    NETSDK1194:ソリューションのビルド時に "--output" オプ ションはサポートされていません。ソリューション レベルの出力パスを
    指定すると、すべてのプロジェクトで出力が同じディレクトリにコピーされ、ビルドの一貫性が失われる可能性があります。
    [X:\TLMForwarder\TLMForwarder.sln]
      TLMForwarder -> X:\TLMForwarder\bin\Release\net8.0-windows\win-x64\TLMForwarder.dll
      TLMForwarder -> c:\users\USER\desktop\TLMForwarder\
    	

    デスクトップのフォルダー内を確認すると一応問題なくファイルは発行されていたが、さらに複雑になって来ると問題が生じる事も有るだろう。

  5. オプションの概要

  6. -p:PublishSingleFile=true
    単一ファイルの作成
    --self-contained=false
    自己完結しない(.Netが別途インストールされている必要有り)
    今回の実例 TLMForwarder.exe 487 kB
    --self-contained=true
    .NETのインストールを強制しないが、とんでもない容量となる
    今回の実例 TLMForwarder.exe 146 MB


dotnet コマンドの一覧表示


    PS > dotnet -h
    使用法: dotnet [runtime-options] [path-to-application] [arguments]
    
    .NET アプリケーションを実行します。
    
    runtime-options:
      --additionalprobingpath    調査ポリシーと調査対象アセンブリを含むパス。
      --additional-deps          追加の deps.json ファイルへのパス。
      --depsfile                       .deps.json ファイルへのパス。
      --fx-version            アプリケーションを実行するために使用するインストール済み Shared Framework  のバージョン。
      --roll-forward          フレームワーク バージョン (LatestPatch、Minor、LatestMinor、Major、LatestMajor、Disable) にロールフォワードします。
      --runtimeconfig                  .runtimeconfig.json ファイルへのパス。
    
    path-to-application:
      実行するアプリケーション .dll ファイルへのパス。
    
    使用法: dotnet [sdk-options] [command] [command-options] [arguments]
    
    .NET SDK コマンドを実行します。
    
    sdk-options:
      -d|--diagnostics  診断出力を有効にします。
      -h|--help         コマンド ラインのヘルプを表示します。
      --info            .NET 情報を表示します。
      --list-runtimes   インストール済みランタイムを表示します。
      --list-sdks       インストール済み SDK を表示します。
      --version         使用中の .NET SDK バージョンを表示します。
    
    SDK コマンド:
      add               .NET プロジェクトにパッケージまたは参照を追加します。
      build             .NET プロジェクトをビルドします。
      build-server      ビルドによって開始されたサーバーとやり取りします。
      clean             .NET プロジェクトのビルド出力をクリーンします。
      format            プロジェクトやソリューションにスタイルのユーザー設定を適用します。
      help              コマンド ラインのヘルプを表示します。
      list              .NET プロジェクトのプロジェクト参照を一覧表示します。
      msbuild           Microsoft Build Engine (MSBuild) コマンドを実行します。
      new               新しい .NET プロジェクトまたはファイルを作成します。
      nuget             追加の NuGet コマンドを提供します。
      pack              NuGet パッケージを作成します。
      publish           .NET プロジェクトを配置のために公開します。
      remove            .NET プロジェクトからパッケージまたは参照を削除します。
      restore           .NET プロジェクトに指定されている依存関係を復元します。
      run               .NET プロジェクトの出力をビルドして実行します。
      sdk               .NET SDK のインストールを管理します。
      sln               Visual Studio ソリューション ファイルを変更します。
      store             指定されたアセンブリをランタイム パッケージ ストアに格納します。
      test              .NET プロジェクトに指定されているテスト ランナーを使用して、単体テストを実行します。
      tool              .NET のエクスペリエンスを向上するツールをインストールまたは管理します。
      vstest            Microsoft Test Engine (VSTest) コマンドを実行します。
      workload          オプションのワークロードを管理します。
    
    バンドルされたツールからの追加コマンド:
      dev-certs         開発証明書を作成し、管理します。
      fsi               F# Interactive を開始するか、F# スクリプトを実行します。
      user-jwts         開発中の JSON Web トークンを管理します。
      user-secrets      開発ユーザーのシークレットを管理します。
      watch             ファイルが変更されたときにコマンドを実行するファイル ウォッチャーを起動します。
    
    コマンドに関する詳細情報については、'dotnet [command] --help' を実行します。
    	


    Back
    Alt+HOME