标签: application-settings

如何以跨平台的方式为python存储桌面应用程序数据?

我有一个需要存储用户数据的python桌面应用程序.在Windows上,这通常是%USERPROFILE%\Application Data\AppName\在OSX上,通常是~/Library/Application Support/AppName/在其他*nix上通常~/.appname/.

标准库中存在一个函数os.path.expanduser,它将为我提供用户的主目录,但我知道在Windows上,至少"应用程序数据"已本地化为用户的语言.OSX也可能如此.

获取此位置的正确方法是什么?

更新: 一些进一步的研究表明,在OSX上获得这个的正确方法是使用函数NSSearchPathDirectory,但这是Cocoa,所以它意味着调用PyObjC桥...

python desktop-application application-settings

40
推荐指数
3
解决办法
6290
查看次数

'SpecialFolder.LocalApplicationData'和'SpecialFolder.ApplicationData'之间的区别?

在我的系统上,%AppData%导致ApplicationData其中C:\Users\<USER>\AppData\Roaming

但也存在C:\Users\<USER>\AppData\Local
一些混乱D:\Users\<USER>\AppData\LocalLow

string local = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
Run Code Online (Sandbox Code Playgroud)

我的问题是,我的应用程序应该在哪些位置保存其数据?

是否有使用这些地点的指南?如果我选择了错误的位置,我是否会让自己接受问题?

.net c# windows application-settings appdata

40
推荐指数
3
解决办法
2万
查看次数

使用依赖注入将配置代码保留在逻辑代码之外的方法

如何使用Settings(ApplicationSettingsBase)和依赖注入将所有配置文件代码保留在逻辑代码之外?

配置我指的是客户特定的配置文件.

我是否真的必须每次需要时注入一个配置类,还是有其他模式?

获得一些示例代码会很棒!

样品:

静态配置:

public static class StaticConfiguration
{
    public static bool ShouldApplySpecialLogic { get; set; }
    public static string SupportedFileMask { get; set; }
}

public class ConsumerOfStaticConfiguration
{
    public void Process()
    {
        if (StaticConfiguration.ShouldApplySpecialLogic)
        {
            var strings = StaticConfiguration.SupportedFileMask.Split(',');
            foreach (var @string in strings)
            {

            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

非静态配置:

public interface IConfiguration
{
    bool ShouldApplySpecialLogic { get; set; }
    string SupportedFileMask { get; set; }
}

public class Configuration : IConfiguration
{
    public bool ShouldApplySpecialLogic …
Run Code Online (Sandbox Code Playgroud)

c# structuremap configuration dependency-injection application-settings

36
推荐指数
2
解决办法
2万
查看次数

错误:'无法创建未知类型'{clr-namespace:NameSpace.Properties}设置'.'

我在ResourceDictionary中定义我的设置和样式:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:properties="clr-namespace:Kavand.UI.Properties">
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary>
            <properties:Settings x:Key="settings" />
        </ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>
    <Style x:Key="PopupMenu_StackPanel">
        <Setter Property="TextBlock.FontSize" Value="{Binding Source={StaticResource settings}, Path=Default.Font_Menu_Size}" />
        <Setter Property="TextBlock.FontFamily" Value="{Binding Source={StaticResource settings}, Path=Default.Font_Menu_Family}" />
        <Setter Property="TextBlock.FontWeight" Value="{Binding Source={StaticResource settings}, Path=Default.Font_Menu_Weight}" />
        <Style.Resources>
            <Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource KavandMenuItem}">
                <Style.Triggers>
                    <Trigger Property="IsChecked" Value="true">
                        <Setter Property="IsEnabled" Value="false" />
                    </Trigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsChecked" Value="True" />
                            <Condition Property="IsHighlighted" Value="True" />
                        </MultiTrigger.Conditions>
                        <Setter Property="Foreground" Value="{DynamicResource K_Brush_Gray}" />
                    </MultiTrigger>
                </Style.Triggers>
            </Style>
        </Style.Resources>
    </Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

当我运行我的应用程序时,我收到错误:

'无法创建未知类型'{clr-namespace:Kavand.UI.Properties}设置'.' 行号"6"和行位置"14".

wpf xaml styles application-settings wpf-style

30
推荐指数
2
解决办法
1万
查看次数

ApplicationSettingsBase中的FileNotFoundException

在调试应用程序时,在Visual Studio中启用了中断异常时,我总是会收到以下错误.这真是让我感到困扰,因为我们处理中断异常.有趣的是,当我继续(加载StringCollection)时它仍然有效.

消息是:

无法加载文件或程序集'System.XmlSerializers,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.该系统找不到指定的文件.

这是导致异常的代码(设计器生成)

[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;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我试图创建一个显示错误的空测试应用程序,但没有发生异常.我们的项目非常庞大,因此很难找到原因.也许这个网站上有人知道如何解决这个问题.

c# application-settings applicationsettingsbase

29
推荐指数
2
解决办法
1万
查看次数

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

我有自定义网格控件的许多应用程序设置(在用户范围内).其中大多数是颜色设置.我有一个表单,用户可以自定义这些颜色,我想添加一个按钮,以恢复默认颜色设置.如何阅读默认设置?

例如:

  1. 我有一个名为用户设置CellBackgroundColorProperties.Settings.
  2. 在设计时我将值设置CellBackgroundColorColor.White使用IDE.
  3. 用户设置CellBackgroundColorColor.Black在我的计划.
  4. 我保存设置Properties.Settings.Default.Save().
  5. 用户点击Restore Default Colors按钮.

现在,Properties.Settings.Default.CellBackgroundColor回归Color.Black.我怎么回去Color.White

.net c# application-settings winforms

28
推荐指数
3
解决办法
4万
查看次数

为什么人们一直建议使用appConfig而不是使用设置文件?(.净)

我经常看到问题的答案如下:"我应该如何在我的.NET应用程序中存储设置?" 是通过手动将条目添加到app.config(或web.config)来编辑app.config文件,如下所示:

<configuration> 
  <appSettings>
    **<add key="ConfigValueName" value="ABC"/>**
  </appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)

然后,访问它们像:

string configValue = Configuration.AppSettings["ConfigValueName"];
Run Code Online (Sandbox Code Playgroud)

我将上面概述的方法称为"app.config"方法.我很少看到人们建议在项目中添加"设置"文件.我已经在网络上和堆栈溢出中看到了这么多次...我开始怀疑我是否遗漏了某些东西......因为我不确定为什么你使用这种方法而不是使用"设置" "档案.我没有进入.NET直到VS2005所以我有一个理论是这是VS2003中的事情是如何完成的,人们从未切换过?

推荐app.config方法的人的示例:

从我的观点来看,"设置文件"方法以下优点:

  1. 可用于同一界面的"应用程序设置"(所有用户通用的设置)和"用户"设置.
  2. 能够在visual studio中使用设置设计器支持.不易出错,然后直接编辑XML文件恕我直言.
  3. 重构 - 您可以重命名特定的设置名称,它将自动更新代码中的引用.
  4. 编译类型检查.
  5. 自动完成支持.
  6. 属性 - 网格功能.我发现PropertyGrid控件是一种非常简单的方法来制作快速选项表单.你做的propertyGrid1.SelectedObject = Settings1.Default;就是你已经完成了.

如果您不确定"设置"文件方法的含义,请参阅此帖子,这是有人建议使用设置文件而不是app.confg的少数示例之一.

编辑:请理解:本主题的目的是弄清楚为什么人们会使用上面概述的app.config方法而不是设置文件方法.我遇到了设置文件方法的限制,并且有时被迫推出自己的自定义解决方案.这是一个完全不同的讨论.

.net app-config appsettings application-settings .net-2.0

28
推荐指数
2
解决办法
9178
查看次数

从以前版本的app.config文件自动"升级"用户设置?

每次我编译我的应用程序并且版本号更改(我有一个自动递增的内部版本号),我将丢失用户配置的app.config设置,因为它们存储在特定版本的AppData文件夹中.基本上,就用户设置而言,我的应用程序的每个版本都从头开始.

虽然这对开发来说是一个轻微的烦恼,但是当我接近部署/发布时它会引发一个问题 - 如果我使用app.config存储我的用户设置,那么每次安装修改版本的补丁时都会对用户的个性化设置进行管理我的应用号码?如果是这样,是否有一种简单的方法可以从以前的版本"升级"设置?我知道在注册表中使用HKCU是另一种选择,但我喜欢My.Settings命名空间的简易性,我想继续使用app.config.

另一个问题提出了类似的问题,但答案似乎并不那么明确.设置我的MSI是否会要求用户升级足以保留这些用户级设置?

.net vb.net app-config application-settings

26
推荐指数
2
解决办法
1万
查看次数

为什么.NET"应用程序设置"不存储在注册表中?

早在九十年代,微软推出了Windows注册表.应用程序可以将设置存储在不同的配置 有适用于应用程序范围和用户特定范围的配置单元,这些范围放置在适当的位置,以便漫游配置文件正常工作.

在.NET 2.0及更高版本中,我们有一个名为Application Settings的东西.应用程序可以使用它们来存储XML文件,app .exe.config和user .config中的设置.这些适用于应用程序范围和用户特定的范围,并且这些范围放置在适当的位置,以便漫游配置文件正常工作.

听起来有点熟?这些应用程序设置由XML文件支持的原因是什么,而不是简单地使用注册表?这不是注册表的目的吗?

我能想到的唯一原因是注册表是特定于Windows的,而.NET试图与平台无关.这是一个(或那个)原因,还是有其他我忽视的考虑因素?

.net registry application-settings

26
推荐指数
6
解决办法
6179
查看次数

Eclipse中Xmx和Xms的最大值?

现在我在ini文件中的这些设置是:

-Xms768M -Xmx1024M

当设置它们更高时,eclipse不再启动了......有没有办法在没有eclipse崩溃的情况下增加这些值?

java eclipse jvm memory-management application-settings

22
推荐指数
4
解决办法
14万
查看次数