単一ファイル発行形式のアセンブリ関連 API 動作の変更
アセンブリのファイルの場所に関連する複数の API は、単一ファイルの公開形式で呼び出されたときに動作が変更されます。
変更内容
.NET 5 以降のバージョンの単一ファイル公開では、バンドルされたアセンブリは、ディスクに展開されるのではなく、メモリから読み込まれます。 単一ファイルで公開されたアプリの場合、これは、特定の場所関連の API が .NET 5 以降で以前のバージョンの .NET とは異なる値を返すことを意味します。 変更点は次のとおりです。
API | 以前のバージョン | .NET 5 以降 |
---|---|---|
Assembly.Location | 展開された DLL ファイル パスを返します | バンドルされたアセンブリに対して空の文字列を返します |
Assembly.CodeBase | 展開された DLL ファイル パスを返します | バンドルされたアセンブリの例外をスローします |
Assembly.GetFile(String) | バンドルされたアセンブリの null を返します |
バンドルされたアセンブリの例外をスローします |
Environment.GetCommandLineArgs()[0] |
値はエントリ ポイント DLL の名前です | 値はホストの実行可能ファイルの名前です |
AppContext.BaseDirectory | 値は一時的な展開ディレクトリです | 値は、ホストの実行可能ファイルの格納ディレクトリです。 |
導入されたバージョン
5.0
推奨アクション
1 つのファイルとして公開する場合は、アセンブリのファイルの場所に依存しないようにします。
影響を受ける API
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示