-1

我有一些文件,我希望在运行我的应用程序时将这些文件复制到临时文件夹中的文件夹中。我的应用程序是用 c# 编写的。如何将这些文件添加到我的应用程序中,以便在我运行我的应用程序时将这些文件复制到临时文件夹?

我尝试将文件添加为资源,但我仍然必须手动保留这些文件。有什么方法可以将文件嵌入到我的应用程序中,以便在我运行时将其复制到临时文件夹中?

谢谢

4

2 回答 2

1

无法在 .exe 中嵌入文件,以便在运行 exe 时自动复制它们。(您可以在解决方案资源管理器中设置属性,以便在按照@noon Silk 的建议编译exe 时复制它们。类似地,您可以使用安装程序来安装应用程序以及一些文件,但再次应用程序时不会复制它们运行,仅在安装时运行)。

要将文件嵌入到 exe 中,以便在运行时将它们复制出来,您可以执行以下操作:

  • 使用 .将文件添加到解决方案资源管理器中的项目Add Existing Item。添加它们时,在文件打开对话框中,单击按钮右端的小向下箭头Add,然后选择该Add as Link选项。而不是将当前文件复制到您的项目中(因此您必须在每次更改时手动更新它),这只会引用您的原始文件,并在每次编译时将最新版本复制到您的应用程序中。
  • 在解决方案资源管理器中获取添加文件的属性并将类型设置为Embedded resource
  • 将代码添加到您的应用程序以将文件写入磁盘。用于Assembly.ExecutingAssembly().GetManifestResourceStream()将数据读入字节数组,然后通过将数组写入FileStream.

例如:

Stream dataStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MyApp.SomeFolder.DataFile.dat");
byte[] fileData = new byte[dataStream.Length];
dataStream.Read(fileData, 0, (int) dataStream.Length);

using (FileStream outStream = new FileStream(@"C:\Temp\RealFileOnDisk.dat", FileMode.Create))
    outStream.Write(fileData, 0, fileData.Length);
于 2013-08-13T06:42:34.843 回答
1

确实,有。

如果您右键单击相关文件的“属性”,您会看到您可以更改“构建操作”,将其设置为“内容”,然后设置“如果较新则复制”。然后,它们将被放置在输出文件夹中,与解决方案中的文件夹结构相同。

于 2013-08-13T05:38:13.720 回答