我正在发布我的 net 5 应用程序:
dotnet publish -r win-x64 -p:PublishSingleFile=true --self-contained true
但是,结果我有:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2/16/2021 10:20 PM 747896 clrcompression.dll
-a---- 2/16/2021 10:20 PM 1322360 clrjit.dll
-a---- 2/16/2021 10:20 PM 5153144 coreclr.dll
-a---- 3/15/2021 11:48 AM 53841260 fff.exe
-a---- 3/15/2021 11:48 AM 11300 fff.pdb
-a---- 3/15/2021 11:48 AM 537 fff.xml
-a---- 2/16/2021 10:20 PM 1056640 mscordaccore.dll
仅部署 fff.exe 不起作用。还必须部署dll。为什么? 参考源代码可以在这里找到:在文件中快速查找
仅部署 fff.exe 不起作用。还必须部署dll。为什么?
回答您的实际问题...以下是为什么有更多 fff.exe 文件的原因:
coreclr.dll
包含dotnet核心框架的本机库。clrjit.dll
包含dotnet核心框架的即时编译器clrcompression.dll
包含本机数据压缩例程。*.pdb
包含调试符号。您可以在发布版本中省略它们。*.xml
包含摘要(类、方法等的描述)就像@JL0PD 已经提到的那样。要达到您想要的结果,只需使用此命令来发布您的应用程序:
dotnet publish -r win-x64 /p:PublishSingleFile=true /p:IncludeNativeLibrariesInSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true -c release
请改用此命令
dotnet publish -r win-x64 /p:PublishSingleFile=true /p:IncludeNativeLibrariesInSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true -c release