この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 50975|答える: 0

[出典] .NET Coreが単一ファイルパスの問題をリリース

[リンクをコピー]
2021年3月28日 13:56:32に投稿 | | | |
.NET Core 3.1を使って単一ファイルのコンソールアプリケーションをLinuxシステム上でリリースすると、プログラムコードの主な役割は非常にシンプルです。プログラムディレクトリの設定ファイルの出力を読みます! しかし、Linux上で単一のファイルを公開して実行すると、そのファイルが見つからないと表示されます。

新しい.NET Core機能は単一ファイルの実行ファイルをリリースします
https://www.itsvse.com/thread-8273-1-1.html

現在のディレクトリを取得するにはSystem.Environment.CurrentDirectoryに注意してください
https://www.itsvse.com/thread-9464-1-1.html
テストコード:

出力は以下の通りです:

AppDomain.CurrentDomain.SetupInformation.ApplicationBase:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/
Environment.CurrentDirectory:/root/test
AppDomain.CurrentDomain.BaseDirectory:/var/tmp/.net/root/ImageWatermark/e5snojro.qyv/


.NET Coreアプリケーションを単一のファイルとして公開し、CentOSシステム上で実行すると、プログラムは自己解凍されてリリースされます/var/tmp/.net/root/ディレクトリを呼び出し、そのディレクトリでリリースされたプログラムを呼び出すため、プログラムが設定ファイルを見つけられない理由も説明できます。

解決

System.Environment.CurrentDirectory を使ってプログラムパスを読み取ることで、System.Environment.CurrentDirectory は確かに現在のディレクトリを取得しますが、プログラムAがプログラムBを呼び出し、プログラムBがSystem.Environment.CurrentDirectoryを使ってディレクトリを取得した場合、 すると、Bプログラムで取得されたディレクトリはもはやBアプリケーションが存在するディレクトリではなくなり、 Aが所在するディレクトリとなります。





先の:.NET Core Linuxエラー:有効なICUパッケージがインストールされていません...
次に:Linux画像における.NET Coreの透かし問題
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com