gpt4 book ai didi

.net - 将 .net 核心控制台应用程序发布为 FDD 不是一种选择吗?

转载 作者:行者123 更新时间:2023-12-05 06:28:08 25 4
gpt4 key购买 nike

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

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

我已经尝试将 .net core SDK 和应用程序更新到 2.2,这并没有给我更多的选择,谷歌也没有帮助。

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

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

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

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

最佳答案

When I try to publish them through Visual Studio I only have the option "Portable" in target runtime. I cannot deselect it.

Portable是(据我所知)Visual Studio 2017 中的依赖于框架的部署 (FDD) 选项。

If I try to use the CLI to publish running only the "dotnet publish -c Release" command it still includes the runtimes.

official Microsoft documentation on publishing .NET Core apps with the CLI清楚地标识dotnet publish -c Release作为命令行的 FDD 选项。

[T]he output includes runtimes which I do not need.

在 .NET Core 2.2 中创建并与 dotnet new console 一起发布的基本“Hello World”控制台应用程序 (dotnet publish -c Release)在其 publish 文件夹中生成四个文件(例如 appname.deps.jsonappname.dllappname.pdbappname.runtimeconfig.json)。

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

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

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

关于.net - 将 .net 核心控制台应用程序发布为 FDD 不是一种选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com