发布.net核心控制台应用程序作为FDD不是一个选项?

问题描述 投票:1回答:1

我有多个使用.net核心用C#编写的小助手控制台应用程序。当我尝试通过Visual Studio发布它们时,我在目标运行时只有“Portable”选项。我无法取消选择它。这使得输出包括我不需要的运行时。

如果我尝试使用CLI发布仅运行“dotnet publish -c Release”命令,它仍然包含运行时。

我试图将.net核心SDK和应用更新到2.2,这没有给我更多选择,谷歌也没有帮助。

以下是其中一个控制台应用程序的csproj:.csproj file

以下是我在VS 2017中的发布选项:publish options

我已经搜索谷歌无数个小时试图找到解决方案。但我尝试的每个解决方案仍然包括发布时的运行时。

所以这是我最后的手段,真的希望这里有人有解决方案。

.net publishing
1个回答
0
投票

当我尝试通过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.jsonappname.dllappname.pdbappname.runtimeconfig.json)。

相比之下,使用dotnet publish -c Release -r <RID> --self-contained true(列出的here列出的RID)发布的相同默认“Hello World”控制台应用程序的完全自包含部署(SCD)具有大约217个以上的文件(212个非程序.dll),并且是~66mb。

当你说你有不必要的运行时间时,我不确定你是否意味着这212个.dll。但如果这些不是您的意思,那么作为建议,您可能希望查看自己的代码(例如EnumsSharedHelpers项目)以更深入地了解此问题。

另一种选择可能是简单地去除所产生的任何运行时(例如,如果适用,对多个应用程序使用相同的运行时)。

© www.soinside.com 2019 - 2024. All rights reserved.