无法将.net核心控制台应用发布为FDD?

时间:2019-02-03 16:29:03

标签: .net publishing

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

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

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

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

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

我搜索了Google数小时,试图找到解决方案。但是我尝试过的每个解决方案在发布时仍然包括运行时。

所以这是我的不得已而为之,真的希望这里有人解决。

1 个答案:

答案 0 :(得分:0)

  

当我尝试通过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 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)(列出了here的RID)具有大约217+个文件(212个非文件)。程序.dlls),大小约为66mb。

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

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