【问题标题】:How to persist from build programmatically?如何坚持以编程方式构建?
【发布时间】:2012-05-05 09:02:25
【问题描述】:

我希望能够在发布之前以编程方式将一些信息加载到Properties.Settings.Default,但它不会持续存在。我该如何克服呢?

我有(作为测试):

private void button1_Click(object sender, EventArgs e)
{
    Properties.Settings.Default.Setting1 = "abc";
    Properties.Settings.Default.Save();
}

private void button2_Click(object sender, EventArgs e)
{
    Text = Properties.Settings.Default.Setting1;
}

我点击了 button1,然后发布(点击一次),然后运行发布的应用程序并点击了 button2。 Text 是空的。

如果不发布应用程序,只需将其关闭并重新打开,然后单击按钮 2——我得到“abc”。

【问题讨论】:

  • @ctescu 感谢您的想法。但它(-添加Properties.Settings.Default.Upgrade();)没有帮助。
  • @ctescu 正如我所说,这无济于事。也许是因为这是一个不同的场景。我希望 发布之前的设置保持不变。事实上,我打算以编程方式加载设置,删除加载它的代码,然后才发布。 (虽然现在,即使没有代码删除它也不起作用。)
  • 您不需要任何代码来执行此操作。只需将其添加为字符串资源并构建???
  • @TonyHopkinson 谢谢。但正如我在问题中所说,这只是一个测试。真实对象更复杂,我不知道如何通过 VS 设置对话框添加。或者您可能指的是其他添加资源的方法?你是怎么做到的?

标签: c# visual-studio-2010 persistence settings


【解决方案1】:
【解决方案2】:

发布不会为您点击按钮。

您需要检测设置未正确初始化(可能与应用程序设置相比),然后自行设置并保存。

空白/不存在/= somesettingToUpgrade

还有一个按名称查找设置、设置并保存的小例程,然后您可以将其放入按钮单击处理程序中以及说 FormLoad。

【讨论】:

  • 谢谢。但我不需要发布来点击它。我在发布前点击。并且设置被保存——因为当我关闭程序并再次启动它时——单击 button2 会产生“abc”。我将Properties.Settings.Default.Upgrade(); 添加到button2_Click,但没有帮助。
  • 选择项目属性。选择资源选项卡。在下拉列表中选择字符串资源。给它一个名字和一个值。它将位于项目的默认名称空间中,并且在代码中您可以使用 Properties.Resources.ResourceName 访问它。 resourceName 是您所称的任何名称。您也可以将文件和图像放在那里,它们都被编译成 exe 或 dll。
  • 谢谢。但我必须以编程方式进行。我无法通过该 Visual Studio 对话框添加大型数组。虽然我可以将其添加为文件。但如果我能以某种方式以编程方式添加它会更好。因此我的问题的标题。 (不过,+1 表示努力。)
  • 好的倒带。你到底想做什么?资源用于固定值,如消息字符串、启动位图和东西。设置用于用户持久性,例如记住您喜欢在哪个文件夹中保存内容、颜色选择、网格中的列顺序等。我确信有解决您问题的方法,但您必须告诉我是什么,而不是让我看看为什么您对某些未知的解决方案没有它。
【解决方案3】:

似乎问题在于范围是“用户”。但如果范围是“应用程序”,则无法以编程方式更改。

所以似乎没有办法做到这一点。坚持以编程方式构建。

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2011-07-24
    • 2020-02-26
    • 1970-01-01
    相关资源
    最近更新 更多