【问题标题】:How to use resources and files in C#如何在 C# 中使用资源和文件
【发布时间】:2016-09-13 05:33:29
【问题描述】:

我有一个由图像组成的程序。我想将一些图像放在一个文件夹中并动态显示该文件夹的内容。该程序应该是可移植的。我该怎么办?我尝试了以下代码,但没有成功:

String path = "Resources/Location.txt";
String path2 = "/IconImagesForDummies/Icon";
ObservableCollection<IconImagesForDummies> icons = new ObservableCollection<IconImagesForDummies>();
String[] lines = null;
if (File.Exists(path))
   lines = File.ReadAllLines(path, Encoding.Unicode);
if (lines != null)
{
   for (int i = 0; i < lines.Length; ++i)
   {
        String str = path2 + @"/" + lines[i];
        if (File.Exists(str))
           icons.Add(new IconImagesForDummies() { Name = str });
   }
}
else
   throw new Exception("The Location.txt which stores the location of icons is missing");
if (icons.Count == 0)
   throw new Exception("There is no icon image");

Location.txt 包含图像的名称。我的问题是程序找不到 Location.txt。我在资源中插入了 Location.txt。我不得不提到我还使用了另一种方法。我创建了一个新文件夹,而不是String path = "Resources/Location.txt";,我使用了文件夹名称,但它也不起作用。我该怎么办?

【问题讨论】:

  • 我认为您的相对路径有问题。调试这个if (File.Exists(path))。路径存在吗?您可能想阅读本文以获得更好的理解:stackoverflow.com/questions/3259583/…
  • @Natrium 实际上它并没有退出,问题是在我的解决方案资源管理器中它存在但不在输出文件中,这就是我使用资源但又无法正常工作的原因
  • @Natrium 其实我也不知道如何用代码在可执行程序旁边放一个文件夹
  • 尝试将build action 更改为contentcopy to output folder 更改为copy always
  • @BojanB 谢谢,它完成了工作,请回答以关闭问题:)

标签: c# file


【解决方案1】:

如果文件未复制到项目的输出文件夹中,请尝试将build action 属性设置为content,并确保文件的copy to output folder 属性设置为copy alwayscopy if newer - 取决于项目的要求。

WPF 项目中将build action 设置为Resource 会将文件编译为程序集或可执行文件。这就是为什么在输出文件夹中找不到这样的文件的原因。

来自 MSDN:

资源文件:编译成可执行文件的数据文件 或库 WPF 程序集。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多