我创建了一个C#WinForms应用程序。它有一些它使用的附加文件,例如帮助文件和一些外部数据文件。我想将这些文件放在Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
路径下的文件夹中,以便应用程序可以查找和读取它们。
在安装应用程序之前,不会创建此路径吗?那么我在哪里将这些文件放在我的VS2010项目中,或者如何告诉我的项目这些文件是否存在以便当我从VS运行(调试)应用程序时它会找到这些文件。
由于
编辑:我确实考虑过将文件添加为资源文件,但不幸的是,在构建和部署项目后可能会添加一些文件。因此,我们决定在程序中搜索并查找特定位置的数据文件(以及相关的帮助文件),并在它们存在时加载它们。
答案 0 :(得分:3)
事情是你的应用程序不需要使用'Environment.SpecialFolder.ProgramFiles'。它“应该”与位置无关。您问题的快速答案是“从应用程序启动的文件夹”。真正的答案是你如何引用这些文件。
您的帮助文件和数据文件需要部署到与应用程序具有已知关系的文件夹中。也就是说,相同的文件夹或子文件夹。考虑制作文件资源。
现在,如果文件是用户可配置的或运行时可写的,则它们不应位于程序文件区域中,而应位于应用程序数据区域中。如果是这样,那就有你的道路!
希望这有帮助。
答案 1 :(得分:1)
您应该将这些文件添加到解决方案中的主(exe)项目中 (右键单击Project Name,选择Add Existing Item)
然后设置其属性Copy to Output Directory = Always
(不确定翻译,因为我使用VS的本地化版本)
当然,应该注意的是,当您在Environment.SpecialFolder.ProgramFiles
中部署文件时,出于安全原因,您无法写入文件(Windows7,Vista)。
答案 2 :(得分:0)
将文件添加为项目中的资源。看一下这个MSDN article。通过右键单击解决方案资源管理器中项目下的“属性”节点,单击“打开”,然后单击“项目设计器”中“资源”页面上的“添加资源”按钮,可以向项目添加资源。
您可以将资源作为链接资源(外部文件)或嵌入资源(项目直接嵌入.resx文件)添加到项目中。
添加链接资源时,存储项目资源信息的.resx文件仅包含磁盘上资源文件的相对路径。如果您将图像,视频或其他复杂文件添加为链接资源,则可以使用与资源设计器中该文件类型关联的默认编辑器对其进行编辑。
添加嵌入资源时,数据将直接存储在项目的资源(.resx)文件中。字符串只能存储为嵌入资源。