当前位置: 首页 > 编程语言 > C#

如何使设计器生成的.Net应用程序设置可移植分享

时间:2023-04-11 01:56:55 C#

C#学习教程:如何使Designer生成的.Net应用程序设置可移植Doppler使用VisualStudio设计器生成的Settings类存储应用程序设置,默认情况下将用户设置序列化到用户的主目录。我想更改此设置,以便所有设置都存储在与exe相同的目录中。这似乎可以通过创建inheritanceSettingsProvider类的自定义提供程序类来实现。有没有人创建过这样的提供者并愿意分享代码?更新:通过使用这个MSDN示例(即简单继承),我几乎可以让自定义设置提供程序正常工作。我最初感到困惑,因为Windows窗体设计器停止工作,直到我在Codeproject上做了这个技巧:internalsealedpartialclassSettings{publicSettings(){foreach(SettingsPropertypropertyinthis.Properties){property.Provider=settingsprovider;}...程序仍然以窗口大小0;0开始。任何有见识的人?为什么不按原样使用CodeProjectPortableSettingsProvider解决方案(稍作修改)?我已经在我的项目(StreamRecorder.NET)中成功地做到了这一点。项目页面上的一些评论很有帮助:我最终得到的代码:staticvoidMain(string[]args){if(args.Contains("-p")||args.Contains("--portable")){MakePortable(Properties.Settings.Default);MakePortable(Properties.LastUsedSettings.Default);MakePortable(Properties.DefaultSettings.Default);}Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);应用程序运行(新主窗体(args));}privatestaticvoidMakePortable(ApplicationSettingsBasesettings){varportableSettingsProvider=newPortableSettingsProvider(settings.GetType().Name+".settings");settings.Providers.Add(portableSettingsProvider);foreach(System.Configuration.SettingsPropertypropinsettings.Properties)prop.Provider=portableSettingsProvider;设置.Reload();最后,我对CP项目进行了以下更改:string_fileName;publicPortableSettingsProvider(stringfileName){_fileName=fileName;}publicvirtualstringGetAppSettingsFilename(){//用于确定存储的文件名esettings//returnApplicationName+".settings";返回_文件名;我知道这个问题很老了我只是想分享我自己的便携式设置提供程序版本,我在这里发布了nuget包。用法非常简单://使默认设置类可移植PortableSettingsProvider.ApplyProvider(Properties.Settings.Default);我也在https://www.codeproject.com/Articles/1238550/Making-Application-Settings-Portable上解释了这个实现的基本策略。只是为了“关闭”这个问题:我最终得到的解决方案有些不尽如人意设计器)设置为自定义设置提供程序缺点:表单设计器中断并给出一个异常,基本上说找不到自定义提供程序类。但是,内置的exe工作正常。在问题中描述的代码中设置提供程序使设计器工作,但由于某种原因,我没有仔细查看,设置不会被序列化。看起来你只需要设置一个便携式的就可以使多普勒便携式。我是开始使用Doppler作为我的主要播客聚合器还是坚持使用我的自制命令行聚合器,我会看看。以上就是《C#学习教程:如何让设计器生成的.Net应用设置可移植和共享》的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: