我最近开始使用 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/