我有多个使用.net核心用C#编写的小助手控制台应用程序。当我尝试通过Visual Studio发布它们时,我在目标运行时只有“Portable”选项。我无法取消选择它。这使得输出包括我不需要的运行时。
如果我尝试使用CLI发布仅运行“dotnet publish -c Release”命令,它仍然包含运行时。
我试图将.net核心SDK和应用更新到2.2,这没有给我更多选择,谷歌也没有帮助。
以下是其中一个控制台应用程序的csproj:.csproj file
以下是我在VS 2017中的发布选项:publish options
我已经搜索谷歌无数个小时试图找到解决方案。但我尝试的每个解决方案仍然包括发布时的运行时。
所以这是我最后的手段,真的希望这里有人有解决方案。
当我尝试通过Visual Studio发布它们时,我在目标运行时只有“Portable”选项。我无法取消选择它。
Portable
(据我所知)Visual Studio 2017中的框架相关部署(FDD)选项。
如果我尝试使用CLI发布仅运行“dotnet publish -c Release”命令,它仍然包含运行时。
这个official Microsoft documentation on publishing .NET Core apps with the CLI清楚地将dotnet publish -c Release
标识为命令行的FDD选项。
[T]他的输出包括我不需要的运行时。
在.NET Core 2.2中创建并与dotnet new console
一起发布的一个简单的“Hello World”控制台应用程序(dotnet publish -c Release
)在其发布文件夹中生成四个文件(例如appname.deps.json
,appname.dll
,appname.pdb
和appname.runtimeconfig.json
)。
相比之下,使用dotnet publish -c Release -r <RID> --self-contained true
(列出的here列出的RID)发布的相同默认“Hello World”控制台应用程序的完全自包含部署(SCD)具有大约217个以上的文件(212个非程序.dll),并且是~66mb。
当你说你有不必要的运行时间时,我不确定你是否意味着这212个.dll。但如果这些不是您的意思,那么作为建议,您可能希望查看自己的代码(例如Enums
和SharedHelpers
项目)以更深入地了解此问题。
另一种选择可能是简单地去除所产生的任何运行时(例如,如果适用,对多个应用程序使用相同的运行时)。