我在Visual Studio中有一个包含3个项目的解决方案(S),我将它们称为CL,WPF和CFG。
我创建了一个具有用户范围和公众可见性的设置文件。这两个项目都使用相同的设置。
S.CL仅需要读取这些设置。S.WPF是用于编辑这些设置的表格,因此需要读写。它包含一个连接到事件处理程序的保存按钮。
S.CFG app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="S.CFG.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<S.CFG.Properties.Settings>
<setting name="ExampleSetting" serializeAs="String">
<value>ExampleValue</value>
</setting>
</S.CFG.Properties.Settings>
</userSettings>
</configuration>
S.CL Execute.cs:
namespace S.CL
{
public class Execute
{
public static void Main(String[] args)
{
Console.WriteLine(S.CFG.Properties.Settings.Default.ExampleSetting);
}
}
}
S.WPF MainWindow.xaml.cs:
namespace S.WPF
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
S.CFG.Properties.Settings.Default.ExampleSetting = "New value";
Console.WriteLine(S.CFG.Properties.Settings.Default.ExampleSetting);
}
}
}
因此,重现步骤:
Run S.CL out> ExampleValue
Run S.WPF out> New value
Run S.CL out> ExampleValue
在S.CL的最后一次运行中,输出应为“新值”。
我可以确认S.WPF每次运行也都获得了最新的值。在我的完整应用程序中,在单击“保存”之前,该表单在文本框中显示最新值。
到目前为止,我已经设法找出S.WPF在用户的AppData文件夹中使用此新的app.config创建了一个文件夹。S.CL使用它的默认配置的内置副本,而S.WPF使用它的默认配置的内置副本,直到写入为止,然后在其中创建仅该可执行文件可以访问的本地副本。
我只希望能够在这两个可执行文件之间保留这些设置。我考虑过其他方法,另一种方法是将设置的XML文件保留在两个可执行文件的根目录中,然后仅解析该文件,但我宁愿使用Visual Studio的app.config / Settings.Settings功能来执行此操作(如果可能的话)。
提前致谢!
您可以在解决方案中有一个app.config文件,而不是将app.config文件添加到每个项目中,然后将此文件链接到两个项目,如此处所述:使用“添加为链接”共享代码。
编辑:
如果你希望能够加载外部的app.config,你可以检查遵循的说明这个帖子,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句