dotnet发布和dotnet pack之间的主要区别是什么

时间:2017-05-22 18:33:33

标签: .net nuget .net-core nuget-package dotnet-cli

我非常感谢dotnet CLI,我正在经历不同的命令。让我有点困惑的命令是试图找出dotnet packpublish之间的主要区别。我的意思是在这个页面上查看他们的描述:

https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet

我的理解是pack创建了一个包,而Publish创建了包+ DLL。

这是对的吗?如果是这样,为什么不一直只使用publish而不是使用DLL文件,如果我们不想这样做。这是真的吗?

3 个答案:

答案 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的情况下则不会,因为它包含捆绑在软件包中的第三方依赖项。