You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 7单文件发布控制台程序:运行时复制XML文件至指定目录

解决方案

1. 将XML文件设置为嵌入资源

在Visual Studio中右键点击你的XML文件,选择属性:

  • 将“生成操作”改为嵌入的资源
  • 将“复制到输出目录”改为不复制

或者直接编辑项目文件(.csproj),添加以下配置:

<ItemGroup>
  <EmbeddedResource Include="你的XML文件名.xml">
    <CopyToOutputDirectory>Never</CopyToOutputDirectory>
  </EmbeddedResource>
</ItemGroup>

2. 在Program类中添加提取并复制XML的代码

利用程序集读取嵌入的资源流,再写入到目标目录。代码示例:

using System.Reflection;
using System.IO;

// 替换为你要复制到的目标目录
var targetDirectory = @"C:\指定目标目录";
var xmlFileName = "你的XML文件名.xml";
// 资源名称格式:项目命名空间 + XML文件名(若文件在子文件夹需追加路径,如MyApp.Files.Config.xml)
var resourceName = $"{Assembly.GetExecutingAssembly().GetName().Name}.{xmlFileName}";

// 确保目标目录存在
Directory.CreateDirectory(targetDirectory);
var targetPath = Path.Combine(targetDirectory, xmlFileName);

// 读取嵌入资源并写入目标文件
using var resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName);
if (resourceStream != null)
{
    using var fileStream = new FileStream(targetPath, FileMode.Create);
    resourceStream.CopyTo(fileStream);
    Console.WriteLine($"XML文件已复制到: {targetPath}");
}
else
{
    Console.WriteLine($"未找到嵌入资源: {resourceName}");
}

关键说明

  • 单文件发布时,.NET会自动把嵌入资源打包进exe,无需额外配置
  • 全程无需依赖外部文件,所有逻辑都在单个exe内完成
  • 若XML文件放在项目子文件夹中,resourceName需要包含文件夹层级(比如MyConsoleApp.Configs.Setting.xml)

内容的提问来源于stack exchange,提问作者AliT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 18:39:52