5

我有一个项目,它根据 C# Setting 类中的值读取文件。然而,这个值会随着机器的变化而变化,我宁愿在程序第一次作为公司环境运行时不询问用户,而是希望在安装程序中设置它,但文件在哪里?有没有更简单的方法?

这是一个视觉工作室插件不是一个独立的程序

4

10 回答 10

3

从您的帖子看来,您有一个 Windows 应用程序?,您可以在应用程序配置中存储一个初始值,您可以在 Visual Studio 中制作一个安装程序并编写自定义操作,这些操作可以在您安装项目的第一次安装时将值写入文件。

于 2009-03-16T12:12:46.287 回答
2

配置文件是完成您所要求的最简单的方法,但它不是最好的。事实上,建议不要在这种情况下使用 .config 文件。

  • 每当用户安装“更新”时,都存在覆盖其现有更改的风险。

  • 一些企业可能对 .config 文件有政策限制。

  • 用户不能轻易地将他的设置从一台 PC 移动到另一台 PC。

根据我自己的经验,使用 XML、MS-Access、注册表或文本文件来存储用户设置已证明比使用 .config 文件更有用。

于 2009-04-08T03:27:43.607 回答
1

我相信您在谈论设计器生成的设置(.settings 文件)?

确切的路径通常包含某种哈希(检查链接)。我通常有自己的设置类,我使用XmlSerializer与 xml 进行序列化,这给了我更多的自由(例如,我认为 C# 设置文件不允许您添加自定义枚举,或者它们使它更难做它不仅仅是将它们添加到 .settings 文件中)。

但是,也许在安装过程中不需要设置值?例如,您可以添加一个FirstStartup设置(设置为true最初),您可以在您的应用程序第一次启动时读取该设置,然后将其设置为false. 这样,您可以在检测到“首次启动”时设置默认设置。

于 2009-03-16T13:37:27.907 回答
1

在安装程序结束时,您肯定需要某种自定义操作。你没有提到你使用什么技术来部署你的应用程序,所以我不会给出任何具体的指导。

我建议在您的App.config. 这是一个 xml 文件,将MyApplication.exe.config在与您的应用程序相同的目录中命名。如果它还没有,请将其添加到您的安装程序中。在您的安装程序中,添加一个新设置:

<configuration>
  <appSettings>
    <add key="MySetting" value="My Value"/>
  </appSettings>
</configuration>

在您的代码中,检索设置:

String setting = ConfigurationSettings.AppSettings["MySetting"];

如果这是机器范围的设置,则此安装程序是设置此设置的正确位置。如果您在第一次执行时执行此操作,如果第一个运行应用程序的人是权限有限的用户,您将遇到文件和目录权限问题。

于 2009-03-16T13:55:01.203 回答
0

最适合您的注册表或 INI 文件或 XML 文件。

于 2009-03-16T12:03:23.187 回答
0

最好的选择是注册表。安装应用程序需要管理员访问权限,因此在安装期间写入注册表不会成为问题。

此外,如果有人不小心删除了 ini 或设置文件,那么程序可能会停止工作。

于 2009-03-16T12:12:01.513 回答
0

你说这是为了企业环境。您可以为组策略创建管理模板以在注册表中设置默认值。然后,如果尚未设置默认值,您的程序可以只查询该注册表值。

于 2009-04-08T03:28:13.967 回答
0

我个人永远不会使用 web.config 或 app.config。只需阅读您自己的 xml 文件,看看我的帖子: http ://www.picnet.com.au/blogs/Guido/post/2009/09/10/XML-Settings-Files-No-more- webconfig.aspx

谢谢

圭多

于 2009-09-09T21:42:12.137 回答
0

为感兴趣的人回答原始问题的“文件位于何处”位(我假设有问题的“设置文件”是“添加新项目”对话框中可用的“设置文件”项目)。

在 Win7(可能还有其他所有)中,设置文件将在路径下生成:

C:\Users\[用户]\AppData\Local

从这里开始的文件夹结构取决于您的 AssemblyInfo 和构建信息,“AssemblyCompany”字段(如果已填充)用于最顶层的文件夹,下面是复制应用程序可执行文件名称的文件夹,然后是构建,然后最后是设置文件(名为“*.config”)。

就我而言,完整的路径如下:

C:\Users\[user]\AppData\Local\[company_name]\Application.exe_StrongName_zx0v1qxyoass4d0z3mtwe3vbrhaehkjg\0.0.5812.21662\user.config

于 2015-12-03T12:11:27.507 回答
-2

我的情况不同,我的项目是一个具有 app.config 文件的类库(dll)。我决定创建 4 个应用程序设置变量(标题、网址、限制、速率)。要创建它,我右键单击项目 --> 属性 --> 设置。您可以使用此命令在代码中检索此值 --> Settings.Default.title, ...etc

问题是假设我从这个库中实例化了 5 个对象(相同的对象,例如 MyProject.MyClass),我希望实例能够拥有自己的设置。我的意思是每个实例都可能有它们的 xml 设置文件。可以这样做吗?

于 2009-04-08T03:08:42.640 回答