[转]netcore发布独立单文件(非托管dll也打包进程序里)

命令行模板

dotnet publish -r <运行时> -c Release -f <框架版本,单框架时可不指定> --self-contained -p:PublishSingleFile=<单文件 true/false> -p:PublishTrimmed=<裁剪 true/false> (-p:IncludeNativeLibrariesForSelfExtract=<原生库以自解压形式打包 true/false> 或 -p:IncludeAllContentForSelfExtract=<全部内容文件以自解压形式打包 true/false>)

例子

dotnet publish -r win-x64 -c Release -f net6.0 --self-contained -p:PublishSingleFile=true -p:PublishTrimmed=true -p:IncludeNativeLibrariesForSelfExtract=true
dotnet publish -r linux-x64 -c Release --self-contained -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true

注意

如果不使用IncludeNativeLibrariesForSelfExtract参数,打包出来的单文件会同时输出native dll作为依赖,不算真正的单文件,使用IncludeNativeLibrariesForSelfExtract后把native dll作为自解压打包进去,才是真正的“单”文件。
如果有其他内容文件,要使用IncludeAllContentForSelfExtract,会把全部内容文件也打包进去。
运行程序时,会先把原生库自动解压到C:\Users\用户名\AppData\Local\Temp\.net\程序文件名\下的一个文件夹中。

使用PublishTrimmed时,要检查生成的文件运行是否正常,以防必要的依赖被裁剪掉。

 

转自: https://www.cnblogs.com/zonciu/p/13961051.html

posted @ 2023-05-11 09:45  Ace001  阅读(302)  评论(0编辑  收藏  举报