1

我创建了一个 C# WinForms 应用程序。它有一些它使用的附加文件,例如帮助文件和一些外部数据文件。我想将这些文件放在Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)路径下的文件夹中,以便应用程序可以找到并读取它们。

在安装应用程序之前不会创建此路径吗?那么我将这些文件放在我的 VS2010 项目中的什么位置,或者我如何告诉我的项目这些文件存在,以便当我从 VS 运行(调试)应用程序时它会找到这些文件。

谢谢

编辑: 我确实考虑将文件添加为资源文件,但不幸的是,在项目构建和部署后可能会添加一些文件。因此,我们决定让程序在特定位置搜索并查找数据文件(和相关的帮助文件),如果存在则加载它们。

4

3 回答 3

3

问题是您的应用程序不需要使用“Environment.SpecialFolder.ProgramFiles”。它“应该”与位置无关。对您的问题的快速回答是“从启动应用程序的文件夹中”。真正的答案是您如何引用这些文件。

您的帮助文件和数据文件需要部署到与应用程序具有已知关系的文件夹中。即同一个文件夹或子文件夹。考虑制作文件资源。

现在,如果文件是用户可配置的或运行时可写的,那么它们不应位于程序文件区域,而应位于应用程序数据区域。如果是这样,那么这就是你的道路!

希望这可以帮助。

于 2012-05-15T10:10:24.827 回答
1

您应该将这些文件添加到解决方案中的主 (exe) 项目中。
(右键单击项目名称,选择添加现有项目)

然后设置它的属性Copy to Output Directory = Always

(不确定翻译,因为我使用的是本地化版本的 VS)

当然,需要注意的是,当您将文件部署在 中时Environment.SpecialFolder.ProgramFiles,出于安全原因,您无法对其进行写入(Windows7、Vista)。

于 2012-05-15T10:08:19.430 回答
0

将文件添加为项目中的资源。看看这篇 MSDN文章。您可以通过右键单击解决方案资源管理器中项目下的属性节点,单击打开,然后单击项目设计器中资源页面上的添加资源按钮,将资源添加到项目中。

您可以将资源添加到项目中,既可以作为链接资源(外部文件),也可以作为嵌入式资源(直接嵌入到 .resx 文件中)。

添加链接资源时,存储项目资源信息的 .resx 文件仅包含磁盘上资源文件的相对路径。如果您将图像、视频或其他复杂文件添加为链接资源,则可以使用与资源设计器中的该文件类型关联的默认编辑器对其进行编辑。

添加嵌入资源时,数据将直接存储在项目的资源 (.resx) 文件中。字符串只能存储为嵌入式资源。

在 Visual Studio 中添加资源

于 2012-05-15T10:27:04.777 回答