命令行模板
项目需要先配置TargetFrameworks或TargetFramework为net5.0
dotnet publish -r <运行时> -c Release -f net5.0 -p:PublishSingleFile=<单文件 true/false> -p:PublishTrimmed=<裁剪 true/false> -p:IncludeNativeLibrariesForSelfExtract=<原生库以自解压形式打包 true/false>
例子
dotnet publish -r win-x64 -c Release -f net5.0 -p:PublishSingleFile=true -p:PublishTrimmed=true -p:IncludeNativeLibrariesForSelfExtract=true
注意
如果不使用IncludeNativeLibrariesForSelfExtract参数,打包出来的单文件会同时输出native dll作为依赖,不算真正的单文件,使用IncludeNativeLibrariesForSelfExtract后把native dll作为自解压打包进去,才是真正的“单”文件。
运行程序时,会先把原生库自动解压到C:Users用户名AppDataLocalTemp.net程序文件名下的一个文件夹中。
这步做完提示
C:Program Filesdotnetsdk5.0.301SdksMicrosoft.NET.SdktargetsMicrosoft.NET.Sdk.DefaultItems.targets(134,5): error NETSDK1136: 如果使用 Windows 窗体或 WPF,或者引用使用 Windows 窗体或 WPF 的项目或包,则必须将目标平台设置为 Windows (通常通过在 TargetFramework 属性中添加 "-windows")。 [C:Userspengfei.lusourcereposDemo1Demo1Demo1.csproj]
这时候只要将指令的-f net5.0删除就可以了,原因未知



