我非常感谢dotnet CLI
,我正在经历不同的命令。让我有点困惑的命令是试图找出dotnet pack
和publish
之间的主要区别。我的意思是在这个页面上查看他们的描述:
https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet
我的理解是pack
创建了一个包,而Publish
创建了包+ DLL。
这是对的吗?如果是这样,为什么不一直只使用publish
而不是使用DLL文件,如果我们不想这样做。这是真的吗?
答案 0 :(得分:11)
dotnet pack
- 创建代码的NuGet包。
这是关键区别 - 这将允许发布到http://nuget.org,或者发布到其他开发人员可以下载的nuget服务器,甚至可以发布到Octopus Deploy。
dotnet publish
- 发布依赖.NET框架或自包含的应用程序。
关键字是"自包含",可能是安装程序,或者是可以通过在主机之间复制/粘贴来部署的文件夹。
答案 1 :(得分:4)
添加@ t0mm13b的答案:
dotnet pack
:输出是其他项目意图重用的包。
dotnet publish
:输出意味着要部署/“运送” - 它不是一个“包文件”,而是一个包含所有项目输出的目录。
答案 2 :(得分:0)
基本上,当我们使用pack
命令时,它将创建一个程序包;而当我们使用publish
命令时,将创建一个可以在其中任何位置复制和执行的文件夹。但是使pack
命令与众不同的原因是,程序包已更新到nuget服务器,而没有上传其依赖项。在运行dotnet restore
命令时会在获取包的项目中更新其依赖项,而在dotnet publish
的情况下则不会,因为它包含捆绑在软件包中的第三方依赖项。