【问题标题】:Copying file from resources从资源中复制文件
【发布时间】:2012-01-10 03:03:44
【问题描述】:

好吧,在我的 C# 项目中,我将一个 .xml 文件添加到资源中,我希望将其从其中提取/复制到应用程序路径,我正在尝试这样做:

string appPath = Path.GetDirectoryName(Application.ExecutablePath);//Declaration of the apppath
File.Copy(appPath, Properties.Resources.config);//process for copy

但是不工作:/,我该怎么做?

【问题讨论】:

  • 你能解释一下什么不起作用吗?你有例外吗?
  • 这是来自无所不知的谷歌的众多答案之一:stackoverflow.com/questions/864140/…
  • 应该被复制到应用程序路径,但不是,文件没有被提取:/

标签: c# xml file resources copy


【解决方案1】:

确保对资源的构建操作设置为“嵌入资源”。

var assembly = Assembly.GetExecutingAssembly();
// See what resources are in the assembly (remove from the final code)
foreach (var name in assembly.GetManifestResourceNames()) {
    Console.Writeline("'{0}'", name);
}
using (var inputStream = assembly.GetManifestResourceStream(resourcePath)) {
    using( var outStream = File.OpenWrite(copyToPath)) {
        input.CopyTo(outStream);
    }
}

【讨论】:

  • @Derezzed 你能解释一下什么不起作用吗?你有例外吗?你将什么资源路径传递给GetManifestResourceStream?你设置“嵌入资源”了吗?
  • 它写着“ReourcePath”的地方,我把它设为“Properties.Resources.config”和“copyToPath”“appPath”。是的,config.xml 资源是嵌入式资源。
  • @Derezzed 资源名称不正确:它应该是完整路径,并带有 .xml 扩展名。添加var all = assembly.GetManifestResourceNames();,并逐行打印数组all。找到您的配置资源的名称,并将其复制到字符串resourcePath 中。对于输出路径,您应该使用类似@"c:\appPath\configcopy.xml"
  • 不能使用 File.Copy 吗?我不明白如何使用反射:/
  • @Derezzed 但我虽然想将数据从程序集中的资源复制到文件中,不是吗?我添加了代码来打印程序集中的资源,你能运行程序并告诉我你看到了什么吗?
猜你喜欢
  • 1970-01-01
  • 2011-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多