dotnet publish 和 dotnet pack 之间的主要区别是什么
what is major difference between dotnet publish and dotnet pack
dotnet pack
和 publish
之间的主要区别是什么?
根据Microsoft's description,我的理解是pack
创建一个包,而publish
创建包+DLL。
这是正确的吗?
如果是这样,为什么不总是使用 publish
并且在不需要时不使用 DLL 文件。
dotnet pack
- 生成代码的 NuGet 包。
这是关键区别 - 这将允许发布到 http://nuget.org,或者发布到可以被其他开发人员拉下的 nuget 服务器,甚至可以与 Octopus Deploy 一起使用。
dotnet publish
- 生成依赖于 .NET 框架或自包含的应用程序。
关键字是 "self-contained",可能是一个安装程序,或者是一个可以通过 copying/pasting 在主机之间部署的文件夹。
添加到 :
dotnet pack
:输出是一个包,意味着要被其他项目重用。
dotnet publish
:输出意味着部署/“运送” - 它不是单个“包文件”,而是包含所有项目输出的目录。
基本上,当我们使用pack
命令时,它会创建一个包;当我们使用 publish
命令时,它会创建一个可以从任何地方复制和执行的文件夹。
pack
命令的独特之处在于,包会在不上传其依赖项的情况下更新到 nuget 服务器。当我们 运行 dotnet restore
时,它的依赖项在获取包的项目中更新。这不是 dotnet publish
的情况,因为它包含打包在包中的 third-party 依赖项。
dotnet pack
和 publish
之间的主要区别是什么?
根据Microsoft's description,我的理解是pack
创建一个包,而publish
创建包+DLL。
这是正确的吗?
如果是这样,为什么不总是使用 publish
并且在不需要时不使用 DLL 文件。
dotnet pack
- 生成代码的 NuGet 包。
这是关键区别 - 这将允许发布到 http://nuget.org,或者发布到可以被其他开发人员拉下的 nuget 服务器,甚至可以与 Octopus Deploy 一起使用。
dotnet publish
- 生成依赖于 .NET 框架或自包含的应用程序。
关键字是 "self-contained",可能是一个安装程序,或者是一个可以通过 copying/pasting 在主机之间部署的文件夹。
添加到
dotnet pack
:输出是一个包,意味着要被其他项目重用。
dotnet publish
:输出意味着部署/“运送” - 它不是单个“包文件”,而是包含所有项目输出的目录。
基本上,当我们使用pack
命令时,它会创建一个包;当我们使用 publish
命令时,它会创建一个可以从任何地方复制和执行的文件夹。
pack
命令的独特之处在于,包会在不上传其依赖项的情况下更新到 nuget 服务器。当我们 运行 dotnet restore
时,它的依赖项在获取包的项目中更新。这不是 dotnet publish
的情况,因为它包含打包在包中的 third-party 依赖项。