我正在使用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