Tag: application settings

当存储的数据类型发生变化时,如何升级Settings.settings?

我有一个应用程序,它在用户设置中存储一组对象,并通过ClickOnce部署。 下一版本的应用程序具有已存储对象的修改类型。 例如,以前版本的类型是: public class Person { public string Name { get; set; } public int Age { get; set; } } 而新版本的类型是: public class Person { public string Name { get; set; } public DateTime DateOfBirth { get; set; } } 显然, ApplicationSettingsBase.Upgrade不知道如何执行升级,因为Age需要使用(age) => DateTime.Now.AddYears(-age)进行转换,因此只会升级Name属性,而DateOfBirth只会升级具有Default(DateTime)的值。 因此,我想通过重写ApplicationSettingsBase.Upgrade来提供升级例程,该例程将根据需要转换值。 但我遇到了三个问题: 当尝试使用ApplicationSettingsBase.GetPreviousVersion访问先前版本的值时,返回的值将是当前版本的对象,该对象没有Age属性且具有空DateOfBirth属性(因为它无法将Age反序列化为DateOfBirth) 。 我无法找到一种方法来找出我正在升级的应用程序版本。 如果存在从v1到v2的升级过程以及从v2到v3的过程,如果用户从v1升级到v3,我需要按顺序运行两个升级过程,但如果用户从v2升级,我只需要运行第二个升级过程。 即使我知道应用程序的先前版本是什么,并且我可以访问其以前结构中的用户设置(例如通过获取原始XML节点),如果我想链接升级过程(如问题2中所述),我在哪里存储中间值? 如果从v2升级到v3,升级过程将从v2读取旧值并将它们直接写入v3中的强类型设置包装器类。 但是如果从v1升级,我将把v1的结果放到v2升级程序中,因为应用程序只有v3的包装类? […]

从安装程序访问配置文件中的“applicationSettings”部分(不是“appSettings”)

我正在为我们构建的Web应用程序创建设置。 不,我有一个配置文件,看起来像这样,包含一个’appSettings’部分和一个’applicationSettings’部分: Username Servername Database Password 现在,从我的设置我必须使用Configuration config = WebConfigurationManager.OpenWebConfiguration(“/”+ targetvdir)从文件系统打开配置文件; 变量’targetvdir’包含配置文件的路径。 我得到了配置文件,我可以编辑’appSettings’部分 config.AppSettings.Settings[“Password”].Value = “something”; 但是无论如何我都无法使用’applicationSettings’部分。 在Web应用程序本身中,我访问该部分 Properties.Settings.Default. 但是这不适用于我的安装项目。 有没有机会像’appSettings’部分一样轻松编辑’applicationSettings’部分? 或者我是否必须编辑xml本身? 任何提示都非常感谢。 亲切的问候,凯哈特曼

应用程序设置+ DirectoryInfo / FileInfo

我还是C#的新手…我正在构建一个WPF应用程序,我正在尝试应用一些用户应用程序设置。 插入标准的App Settings(int,double,string等)很容易。 我甚至插入了类似WindowState的东西。 我想将DirectoryInfo和/或FileInfo作为可保存的设置而不是字符串。 选定类型:System.IO.File给出错误消息“不支持抽象类型”。 这是有道理的,因为如何将抽象类型实现为设置。 选定类型:System.IO.FileInfo给出错误消息“类型’System.IO.FileInfo’未定义。” DirectoryInfo / FileInfo无法设置为应用程序设置吗? 可能吗? 值得的时间? 如何确定哪些可用作设置,哪些不可用? 我对用户设置的体验是有限的,我正在努力扩展我的知识,这让我很难过。 编辑:我试图发布一些截图,但显然我太新了。 我正在使用Visual Studio,Application Settings。 进一步说明: http://msdn.microsoft.com/en-us/library/a65txexh.a​​spx 应用程序设置可以存储为XML可序列化的任何数据类型,或者具有实现ToString / FromString的TypeConverter。 最常见的类型是String,Integer和Boolean,但您也可以将值存储为Color,Object或连接字符串。 DirectoryInfo di = new DirectoryInfo(@”C:\”); di.ToString(); 我错过了什么,因为它有ToString()…

应用程序设置中的StringCollection不会被存储

我想使用StringCollection作为应用程序设置,但是在阅读它不是问题时,我发现没有存储设置。 如何使其工作? 任何解决方法? 这有什么问题? 我正在使用的代码: private static void AddToRecentProfiles(string path) { if (SpellCaster3.Properties.Settings.Default.RecentProfiles == null) SpellCaster3.Properties.Settings.Default.RecentProfiles = new StringCollection(); int index = SpellCaster3.Properties.Settings.Default.RecentProfiles.IndexOf(path); if (index >= 0) SpellCaster3.Properties.Settings.Default.RecentProfiles.Swap(index, 0); else SpellCaster3.Properties.Settings.Default.RecentProfiles.Insert(0, path); if (SpellCaster3.Properties.Settings.Default.RecentProfiles.Count > SpellCaster3.Properties.Settings.Default.MaxRecentProfiles) SpellCaster3.Properties.Settings.Default.RecentProfiles.RemoveAt(SpellCaster3.Properties.Settings.Default.RecentProfiles.Count – 1); SpellCaster3.Properties.Settings.Default.Save(); OnRecentProfilesChanged(SpellCaster3.Properties.Settings.Default.RecentProfiles, EventArgs.Empty); }

基于约定的构造函数字符串参数与Ninject的绑定

我在我的项目中使用Ninject作为IoC容器。 我有以下课程: public class SomeRepository:ISomeRepository { public SomeRepository(string someDatabaseConnectionString) { // some code here.. } } 在我的应用程序设置文件中,我有一个名为“someDatabase”的连接字符串。 默认情况下,应该添加以下配置,以便将此连接字符串注入构造函数: kernel.Bind() .To() .WithConstructorArgument(“someDatabaseConnectionString”, connString); 但我想实现这种字符串的传统绑定。 名称以“ConnectionString”结尾的字符串类型的所有构造函数参数的值应从应用程序的connectionStrings配置部分获取并自动注入。 我也想为appSettings部分实现类似的约定。 这种方法在Mark Seeman的“Primitive Dependencies”一文(“基元的约定”一节)中有更详细的描述。 在示例中使用Castle Windsor容器。 是否可以使用Ninject实现此类约定,最好的方法是什么? 我已经尝试过ninject.extensions.conventions但似乎它没有这样的function,是吗?

在C#中读取默认应用程序设置

我有自定义网格控件的许多应用程序设置(在用户范围内)。 其中大多数是颜色设置。 我有一个表单,用户可以自定义这些颜色,我想添加一个按钮,以恢复默认颜色设置。 如何阅读默认设置? 例如: 我在Properties.Settings有一个名为CellBackgroundColor的用户设置。 在设计时,我使用IDE将Color.White的值设置为Color.White 。 用户在我的程序CellBackgroundColor Color.Black设置为Color.Black 。 我使用Properties.Settings.Default.Save()保存设置。 用户单击“ Restore Default Colors按钮。 现在, Properties.Settings.Default.CellBackgroundColor返回Color.Black 。 我该如何回到Color.White ?

有人可以提供快速的App.config / Web.config教程吗?

我以前曾经多次使用过这两个配置文件,但我从来没有花时间完全理解它们是如何工作的。 正如大多数人所做的那样,我理解了如何调用WebConfigurationManager.AppSettings[“key”]来获取配置值的基础知识。 以下是我提出的一些问题: 在类库中引用配置值时会发生什么,并且库是更大解决方案的一部分? 是否需要将app.config复制到输出目录才能找到变量? (我假设是的) 你能直接在另一个类库中使用app.config的配置值吗? 假设问题3为“是”,如果来自不同库的多个app.config文件包含具有相同键的配置值,会发生什么? 引用web.config但在类库中会发生什么? 当您引用app.config但在网站或Web应用程序项目中时会发生什么?

如何在应用程序设置中存储对象列表

我最近熟悉了C#应用程序设置,看起来很酷。 我正在寻找一种存储自定义对象列表的方法,但我找不到方法! 实际上我看到了一个存储int []的post ,但它对这个问题没有帮助。 我试图更改该解决方案的配置,以使其适合我的问题。 那个XML配置文件是: 我尝试在type属性中引用我的对象,但它没有帮助,因为它没有识别我的对象…我试过“type = List”和“type =”tuple []“ 这两个选项都没有帮助我! 我有一堂课看起来像: class tuple { public tuple() { this.font = new Font (“Microsoft Sans Serif”,8); this.backgroundcolor_color = Color.White; this.foregroundcolor_color = Color.Black; } public string log { get; set; } public Font font { get ; set; } public String fontName { get; set; […]

ApplicationSettingsBase中的FileNotFoundException

调试应用程序时,在Visual Studio中启用了中断exception时,我总是会收到以下错误。 这真是让我感到烦恼,因为我们在中断exception时工作。 有趣的是,当我继续(加载StringCollection)时它仍然有效。 消息是: 无法加载文件或程序集’System.XmlSerializers,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089’或其依赖项之一。 该系统找不到指定的文件。 这是导致exception的代码(设计器生成) [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public global::System.Collections.Specialized.StringCollection Mru { get { return ((global::System.Collections.Specialized.StringCollection)(this[“Mru”])); } set { this[“Mru”] = value; } } 我试图创建一个显示错误的空测试应用程序,但没有发生exception。 我们的项目非常庞大,因此很难找到原因。 也许这个网站上有人知道如何解决这个问题。