【问题标题】:Publish .net core console App as FDD not an option?将 .net 核心控制台应用程序发布为 FDD 不是一种选择?
【发布时间】:2019-02-03 16:29:03
【问题描述】:

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

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

我已尝试将 .net 核心 SDK 和应用程序更新到 2.2,但没有给我更多选择,Google 也无济于事。

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

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

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

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

【问题讨论】:

    标签: .net publishing


    【解决方案1】:

    当我尝试通过 Visual Studio 发布它们时,我在目标运行时中只有“可移植”选项。我无法取消选择它。

    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 publish -c Release 发布的基本“Hello World”控制台应用程序 (dotnet new console) 在其 publish 文件夹中生成四个文件(例如 appname.deps.jsonappname.dllappname.pdbappname.runtimeconfig.json)。

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

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

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

    【讨论】:

    • 你好阿纳克苏纳曼。问题实际上是,当我使用标准命令“dotnet publish -c Release”时,它仍然将应用程序发布为 SCD,并带有我不想要的运行时。我根本无法让它作为 FDD 发布。 enums / sharehelpers 项目只是类库,所以问题不应该存在。
    • 您可以使用选项--self-contained false 来关闭SCD。
    猜你喜欢
    • 2022-08-20
    • 2019-09-26
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2020-01-11
    相关资源
    最近更新 更多