在 .exe 文件中嵌入 json 文件

Embed json file within .exe file

我正在尝试将我的控制台应用程序发布到 1 个 exe 文件中。通过添加到 csproj 文件,我设法将 dll 文件嵌入到 exe 文件中:

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
      <PublishSingleFile>true</PublishSingleFile>
      <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
      <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

但是我仍然需要我的文件 extractConfig.json 和 exe 文件在同一个 space 中,否则它不会 运行。我怎样才能将这个文件也嵌入到 exe 中?

目前正在发布中:

但我需要它,所以它只是 exe 文件

有几个选项:

如果不存在则创建配置

程序启动时检查配置文件是否存在。如果没有,则创建它。您可以从序列化的默认配置对象创建此文件,或将配置文件作为字符串资源或其他方式包含在内。我也会考虑将此文件放在 localappdata 文件夹中,因为您可能没有对 .exe 文件所在文件夹的写入权限。

从包中排除配置文件

您可以为配置文件添加 ExcludeFromSingleFile 选项,使其不包含在单个 .exe 文件中。这显然需要您部署多个文件。

<ItemGroup>
    <None Update="extractConfig.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
    </None>
  </ItemGroup>

与我一起工作的人交谈并接受了@SirOneOfMany 的建议,我现在使用常量而不是 json 文件,这很容易让我只有 1 个 exe 文件。

感谢大家的建议