web-dev-qa-db-ja.com

.NETCORE 3.0を使用し、/ p:PUBLISHSINGLEFILE = TRUEフラグを使用しているときに実行可能なパスを取得する方法

私は最近Dotnet Core 3へのアプリケーションをアップグレードし、ビルドプロセス中にPublishSingleFileフラグを使い始めました。これら2つの変更が変更された方法は変更された方法が変更されました。実行可能ファイルがあるパスを取得するのではなく、_/var/tmp/.net/_ではランダムなディレクトリにリダイレクトされます。ここでは_/opt/appdir/_を取得していました。

_Directory.SetCurrentDirectory(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
_

編集:それで、ランダムなDIRがスピッティングされているようです。実際には、他のディレクトリにある重要なリソースが含まれていない私のアプリケーションの開梱されていないバージョンを指しています。

7
Theyouthis

以下は、オリジナルの実行可能ファイルに、その後パスを与えるようです。

System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName
 _
10
Vimes

あなたは実際の実行可能パスを取得していました。あなたは何が起こっていたのか理解できなかった。 PublishSingleFileを使用することは、実行時にソフトウェアがどのようにプログラムされているものを正確に実行する単一のファイルを生成しません。実際に起動することは、このフラグを発行することです。実行されたすべてのファイルのパッケージバージョンを含むファイルが、/var/tmp/.netのaサブディレクトリに解凍してから実行します。そのため、公開プロセスの後にPublish Dirに設定を移動している場合は、デプロイして実行しようとすると自動的に実行可能な場所に設定されません。

0
Theyouthis