我正在使用3210,我的應用程序已編寫,它按照我的需要進行操作。用戶的目標平臺是OSX。它依賴於2個的NuGet包與自己的依賴,特別是:如何在osx上分發.net core 2.0控制檯應用程序
- NetMQ
- Microsoft.Extensions.Configuration.CommandLine
我運行下面的命令來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
又名./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
這樣的詞讓我覺得這是需要去的方式。
這兩個環節在哪裏,我主要是讓我的信息:
https://docs.microsoft.com/en-us/dotnet/core/deploying/deploy-with-cli https://docs.microsoft.com/en-us/dotnet/core/tools/project-json-to-csproj