C# 从其他项目读取Properties.Settings.Default

C# 从其他项目读取Properties.Settings.Default,c#,.net,wpf,configuration,settings,C#,.net,Wpf,Configuration,Settings,在我的wpfmvvm应用程序中,我将Model、View和ViewModel作为一个单独的项目。现在,在我的视图应用程序中,我在设置中定义了用户设置。设置文件中,我可以通过以下方式访问它们: Properties.Settings.Default.MySettingName 在我的Tool.exe.xml中,我可以确认设置是否存在: <userSettings> <Tool.Properties.Settings> <setting nam

在我的
wpfmvvm
应用程序中,我将
Model
View
ViewModel
作为一个单独的项目。现在,在我的
视图
应用程序中,我在
设置中定义了用户设置。设置
文件中,我可以通过以下方式访问它们:

Properties.Settings.Default.MySettingName
在我的Tool.exe.xml中,我可以确认设置是否存在:

<userSettings>
    <Tool.Properties.Settings>
        <setting name="MySettingName" serializeAs="String">
            <value>False</value>
        </setting>
    </Tool.Properties.Settings>
</userSettings>

但它们都始终返回0个实体

我还知道我可以创建一个
ViewModel
并从视图绑定设置,但对于这种特殊情况,创建一个新的
ViewModel
来访问设置听起来有点过分了


谢谢你的帮助

AppSettings用于“默认”AppSettings配置部分。您需要打开自己的配置部分。试试这个:

ConfigurationManager.GetSection("userSettings");
多亏了

下面是我如何访问设置值的:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// find section
ClientSettingsSection configSection = config.SectionGroups[@"userSettings"].Sections["Tool.Properties.Settings"] as ClientSettingsSection;

var setting = configSection.Settings.Get("MySettingName").Value.ValueXml.InnerText;

如果使用的是visual studio,则可以将“设置”类的访问修饰符更改为“公共”。双击Settings.Settings文件,顶部有一个下拉列表。然后,您可以使用完整的名称空间访问设置。更好的方法是提供一个服务,使用
SettingsBase
包装设置。您可以提供更多关于服务的详细信息吗?看起来不错,但我仍然只获取默认值,而不是配置文件中的值:-(NVM..我真傻。如果生成另一个链接项目,Visual studio每次在生成时都会覆盖配置文件。
ConfigurationManager.GetSection("userSettings");
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

// find section
ClientSettingsSection configSection = config.SectionGroups[@"userSettings"].Sections["Tool.Properties.Settings"] as ClientSettingsSection;

var setting = configSection.Settings.Get("MySettingName").Value.ValueXml.InnerText;