这里我们有一个各种用户使用的winforms桌面应用程序。每个用户在本地运行应用程序。也就是说,构建文件夹对于每个用户是分开的。它们在本地应用程序配置文件下也有不同的配置键集来运行应用程序(不同的连接字符串和键选项)。您可能会猜到更新版本的痛苦程度。
我的目的是将此winforms桌面应用程序放在共享文件夹中并将其共享给每个用户。这里的挑战是它们的配置是分开的。
我尝试使用不同的名称合并单独的键并使用代码下的条件,但作业似乎很大。
有没有办法收集bin文件夹下的所有这些单独的配置文件,并根据用户名在它们之间切换?解决这个问题的最简单方法是什么?
谢谢。
答案 0 :(得分:0)
我的主张是使用修改后的.NET设置机制。通常,您可以具有特定于应用程序和用户的特定设置。在这种情况下,我们想要使用用户设置。
此方法的问题是用户设置不存储在bin文件夹中,而是存储在其他位置,即%userprofile%\ appdata \ local ... (here是详细信息)。但是,您可以通过编写自定义设置提供程序来覆盖此行为。幸运的是有人已经做到了。来自此answer的CustomSettingsProvider
就像一个魅力。
总结这里是一个解决方案:
定义一些特定于用户的设置。
将CustomSettingsProvider
添加到您的项目中。
在项目中查找MySettings
类,并为其添加以下属性:
[System.Configuration.SettingsProvider(typeof(CustomSettingsProvider))]
。
MySettings.Default.SettingsKey = $@".\user_{Environment.UserName}.config";
CustomSettingsProvider
,则会创建一个空文件。ConfigurationManager.ConnectionStrings
的引用必须替换为对MySettings.PropertyWithConnectionString
的引用。