.net-core - 我可以缩小 dotnet 发布包吗

标签 .net-core publish

我最近开始使用 dotnet 核心(与老式的普通 .net 相对)进行开发,以创建许多小型实用程序控制台应用程序。

进展顺利,到了我要发布的地步。

我正在使用 CLI,因为我只对 Win 10 部署感兴趣,所以尝试过

dotnet publish -c release -r win10-x64

它工作并为我构建了一个“发布”文件夹,其中似乎一切正常,尽管与应用程序的大小(~500 行代码)相比,“发布”文件夹很大(~70mb)。

因为我只打算部署到 Win10 机器上,有没有办法打包它,这样我就不需要所有的 .NET 文件了?我认为这就是 -r 选项的作用,但似乎并没有取得多大成就。

最佳答案

这取决于您希望如何部署您的应用程序/谁将使用它们。

-r 标志创建一个独立的应用程序。这会导致 publish 命令包含指定平台所需的 .NET Core DLL(以及平台特定的 nuget 包,如果它们可用),这意味着任何人都可以使用该应用程序而无需安装 .NET Core运行时。

如果您删除 -r 标志,则 publish 将只包含您应用程序的 DLL。但这意味着无论谁想要使用您的应用程序,都必须先安装 .NET Core 运行时。

您可以使用 -o 标志将发布输出写入不同的目录,例如

dotnet publish -c release -r win10-x64 -o ./publish-win10

dotnet publish -c release -o ./publish-any

现在查看写入到 ./publish-win10./publish-any 文件夹中的内容,您可以了解其中的区别。

如果您将它们安装到已存在 .NET Core 运行时的系统上,那么您只需分发 DLL 即可节省大量空间。但是,如果您希望能够在最终用户不必担心安装 .NET Core 运行时的情况下分发应用程序,那么使用 -r 标志来创建独立分发是可行的方法,但会导致包含必要的 .NET Core 程序集的“包”。

据我所知,-r 标志不会影响您的应用程序的编译方式,只会影响哪些运行时 DLL 作为 publish 命令的一部分。因此,如果您为 win10-x64 发布代码,或者使用或不使用 -r 标志,您的代码总是会获得相同的 DLL,这样您的应用程序 DLL 将在任何平台上运行(.NET Core 兼容)平台,但我很高兴在这一点上得到纠正。

关于.net-core - 我可以缩小 dotnet 发布包吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52787928/

相关文章:

.net-core - 适用于 Windows 的 MSI 安装程序的术语“功能带”是什么意思?

集成了facebook登录的android应用程序,如何生成发布 key ?

.net - 从 Visual Studio 2015 构建时自动发布 Web 应用程序

android facebook 发布照片

c# - 在 EF7 中添加多个相同类型的导航属性

c# - 从 docker 容器连接到 SQL Server 数据库

c# - .NET Core 如何异步发布消息到MSMQ?

c# - 从函数中调用 Akka.Net Actor 并返回 Acknowledgment

iis - Core 2.0 发布 IIS HTTP 错误 500.19 - 内部服务器错误

visual-studio - 从命令行发布 ClickOnce