我编写了一个类,可以让我在应用程序设置中轻松读取和写入值:
public static class SettingsManager
{
public static string ComplexValidationsString
{
get { return (string)Properties.Settings.Default["ComplexValidations"]; }
set
{
Properties.Settings.Default["ComplexValidations"] = value;
Properties.Settings.Default.Save();
}
}
Run Code Online (Sandbox Code Playgroud)
问题是值没有真正保存,我的意思是当我退出应用程序并再次运行它时它没有改变.我该怎么做才能确保在关闭和再次打开之间保存的值仍然存在?
我们有来自的应用程序设置ApplicationSettingsBase.当我们推送新版本的应用时,我们需要致电:
//
// Summary:
// Updates application settings to reflect a more recent installation of the
// application.
public virtual void Upgrade();
Run Code Online (Sandbox Code Playgroud)
(来自元数据)
现在有一些棘手的方法来确定您的设置是否需要升级,例如这篇文章在我看来只会升级您的设置一次.现在我可以将我的应用程序的当前版本存储在设置中,并在每次实例化设置时进行比较,如果它与当前版本不同,那么我可以升级.
我的问题是为什么不是Upgrade()每次我实例化设置时调用?这样我知道我永远不会过时.
.net c# upgrade application-settings applicationsettingsbase
我在我的项目中使用Ninject作为IoC容器.我有以下课程:
public class SomeRepository:ISomeRepository
{
public SomeRepository(string someDatabaseConnectionString)
{
// some code here..
}
}
Run Code Online (Sandbox Code Playgroud)
在我的应用程序设置文件中,我有一个名为"someDatabase"的连接字符串.默认情况下,应该添加以下配置,以便将此连接字符串注入构造函数:
kernel.Bind<ISomeRepository>()
.To<SomeRepository>()
.WithConstructorArgument("someDatabaseConnectionString", connString);
Run Code Online (Sandbox Code Playgroud)
但我想实现这种字符串的传统绑定.名称以"ConnectionString"结尾的字符串类型的所有构造函数参数的值应从应用程序的connectionStrings配置部分获取并自动注入.我也想为appSettings部分实现类似的约定.这种方法在Mark Seeman的"原始依赖关系"一文("基元的约定"一节)中有更详细的描述.在示例中使用Castle Windsor容器.
是否可以使用Ninject实现此类约定,这样做的最佳方法是什么?我已经尝试过ninject.extensions.conventions但似乎没有这样的功能,是吗?
在.NET应用程序中,如果您有特定的设置需求,例如将它们存储在数据库中,那么您可以替换LocalFileSettingsProvider为您的示例的自定义设置提供程序:
要声明ApplicationSettingsBase要使用特定提供程序的设置类(继承的类),请使用它来装饰它SettingsProviderAttribute并将提供程序类型作为参数传递[SettingsProvider(typeof(MyCustomProvider))],否则它将使用默认值LocalFileSettingsProvider.
我的问题:是否有一个配置或技巧可以强制我的应用程序在不使用属性的情况下在整个应用程序中使用我的自定义提供程序?
原因是我通过MEF加载插件,插件可能是通过第三方编写的,我不希望他们关心如何处理设置.
我需要一些应用程序的设置,该应用程序将在计算机的所有用户之间共享,但也可以在运行时进行更改.那个接缝简单,但根据应用程序设置MSDN文章,它是一个或另一个.
根据范围,有两种类型的应用程序设置:
应用程序作用域设置可用于诸如Web服务的URL或数据库连接字符串之类的信息.这些值与应用程序相关联.因此,用户无法在运行时更改它们.
用户范围设置可用于诸如保留表单的最后位置或字体首选项之类的信息.用户可以在运行时更改这些值.
我可以编写代码来编辑app.config XML文件,但由于它位于程序目录中,因此它受Windows 7保护.因此,如果不升级程序或使用NTFS权限,这是不可能的.
所以我需要将配置文件写在像这样的公共文件夹中System.Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData).
但这是一个相当普遍的要求!
所以,我想知道是否有一种简单的方法可以在不重新发明轮子的情况下实现这一目标,或者我是否必须编写自己的设置管理器.
背景:我在一个设置中有一个大的xml字符串,但无法反序列化.XmlSerializer抱怨它不是有效的xml.在Project> Settings中查看字符串时,它看起来被截断了.
如果应用程序设置的大小有限但我没有找到任何内容,我google了.
然后我尝试使用以下代码生成的dummydata重现它:
[Test]
public void DumpDummyData()
{
int n = 500;
var s = new string('a', 100);
using (FileStream stream = File.OpenWrite(@"C:\Temp\"+n+".txt"))
{
using (var writer = new StreamWriter(stream))
{
for (int i = 0; i < n; i++)
{
writer.WriteLine( i +" " +s);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
当在设置中粘贴文件的内容时,在行310处截断该字符串.在两个不同的项目中尝试过.
我的问题是应用设置大小的限制是多少?
我有一个需要存储数据的应用程序.目前,我使用内置的应用程序设置来完成它,但它只给我两个选择:应用程序和用户范围.理想情况下,我想要一个"本地"范围,允许应用程序在另一个用户下运行,仍然可以找到它的数据,而不是为该用户重新创建它.应用程序范围可以执行此操作,但它是只读的.应用程序数据将由用户更改.如果只允许管理员对数据进行更改,则可以.
正如您可能猜到的,我有一个管理工具,允许用户更改数据和Windows服务运行器,它可以读取数据并对其执行某些操作.如果Windows服务运行器访问管理工具创建的数据,那将是很好的.
在我使用Visual Studio 2010制作并使用WinForms的C#程序中,我希望程序保存一些复选框和文本框的状态,以便下次加载程序时,它们会被检查或取消选中作为最后一次运行状态.也与文本框等内的字符串相同...
实现这一目标的正确方法是什么?.NET中有内置的东西吗?任何提示和代码片段都会受到关注!
谢谢
我在Manifest中添加了"android.permission.WRITE_SECURE_SETTINGS".但我仍然收到一条错误消息 - 要求"WRITE_SECURE_SETTINGS".
我已经看到很多关于这个的讨论,并且这个设置被阻止用于第三方软件.
我可以添加我的应用程序的任何其他方式可以获得此权限吗?
我看到这个ADB命令,但我不太熟悉如何使用该到我的应用程序添加到我的设备,低于命令需要root我的设备也可以是在使用之前,因为它没有通过只读文件系统复制?
adb remount
adb push app.apk /system/app/
Run Code Online (Sandbox Code Playgroud) 我正在构建一个新版本的Windows窗体应用程序,它可以安装在各种不同的PC上.该应用程序由技术人员安装,在安装期间配置不同的应用程序,用户和其他设置.到目前为止,我一直在注册表中存储这些设置,并且在应用程序的每次启动时它都会读取注册表以获取不同的值.如果我们需要更改注册表中的任何设置,我们可以直接在reg(经验丰富的技术人员)或通过重新安装(新手技术人员)的应用程序中进行更改.
由于我现在正在构建一个新版本,我想知道处理这些类型设置的最佳实践是什么.我想将它从注册表中移出并进入某种类型的og设置,资源,xml文件,我可以在安装过程中直接操作,然后在应用程序内或通过专为技术人员设计的帮助应用程序.
那么,为Windows窗体应用程序存储和编辑应用程序和用户特定设置的首选方法是什么?
Applicatin是一个Win 32位VB.Net桌面表单应用程序.
settings app-config application-settings settings.settings winforms