私は使っている Visual Studio for Mac
、私のアプリケーションは書かれています、それは私が望むことをします。ユーザーのターゲットプラットフォームはOSXです。具体的には、独自の依存関係を持つ2つのNugetパッケージに依存しています。
次のコマンドを実行して、アプリケーションをbuild
します。
dotnet build -c Release -r osx.10.11-x64
出力は、成功したことを示し、ファイルを配置した場所を示します。
そのフォルダーには次のファイルが含まれています。このフォルダーは私がユーザーに配布すると想定しているものですが、エラーが発生するため、この質問があります。
MyApp <---- executable
MyApp.deps.json
MyApp.dll
MyApp.pdb
MyApp.runtimeconfig.dev.json
MyApp.runtimeconfig.json
libhostfxr.dylib
libhostpolicy.dylib
したがって、私のユーザーはこれを受け取り、dotnet
ランタイムがインストールされています。実行可能ファイルを実行するとき(ここではMyApp
aka ./MyApp
)次のエラーが表示されます。
An Assembly specified in the application dependencies manifest (MyApp.deps.json) was not found:
package: 'AsyncIO', version: '0.1.26'
path: 'lib/netstandard1.3/AsyncIO.dll'
さて、AsyncIO
はNetMQ
の依存関係なので、そこから来ています。しかし、私は./MyApp
私のファイルシステムのどこからでも、それは機能します。そのため、開発システムとしてシステムにインストールされているNugetパッケージには、新しいユーザーのシステムとは異なり、引き続きアクセスできると思います。 Macからの配布に関するドキュメントは実際には見つかりませんでした。私が今できると思う唯一のことは、代わりにプロジェクトファイルを配布し、ユーザーに実行するように指示することです。
dotnet run -p MyApp.csproj
私が正しく理解していれば、これはnugetパッケージをインストールします。
ユーザーに次のものを使用させることもできます。
dotnet MyApp.dll
私はグーグルでこの形を見てきました。しかし、実行可能ファイルが生成される理由については、疑問が生じます。物乞いは、それを行う方法があれば、選択者になることはできませんdotnet <dll>
私は幸せです、私はそれを実行させる必要があります。
私がここで見逃しているものがあるはずです。さもなければ、netcore2.0アプリのこの詳細、配布は見落とされていましたか?
さらに掘り下げてみると、これも便利なコマンドのようです。
dotnet publish -c Release --framework netcoreapp2.0 --runtime osx.10.11-x64
そして、それはすべての種類のDLLとすべての依存関係DLLも追加します。 publish
のような言葉は、これが必要な方法だと私に思わせます。
これらの2つのリンクは、私が主に情報を取得している場所です。
https://docs.Microsoft.com/en-us/dotnet/core/deploying/deploy-with-clihttps://docs.Microsoft.com/en-us/ dotnet/core/tools/project-json-to-csproj
それでも、実行可能ファイル「MyApp」は真に独立したバイナリではないという彼の最初の観察に戻ります。そのバイナリを別のディレクトリに移動すると、MyApp.dllが見つからないと文句を言います。
具体的には、使用したコマンドは次のとおりです。
dotnet new console
dotnet publish -c Release --runtime osx.10.12-x64 --self-contained true
同じ問題があります。私の「MyApp」は実際には自己完結型のアプリではありません。実際、「MyApp」には、それが存在するディレクトリ内に少なくとも次のファイルが必要であることがわかりました。
MyStatic ----> my 'exe'
MyStatic.dll
libhostpolicy.dylib
MyStatic.deps.json
MyStatic.runtimeconfig.dev.json
自己完結型のバイナリは、スタンドアロンで実行するためにこのすべてのジャンクを必要とすべきではありません。