我决定使用Properties.Settings为我的ASP.net项目存储一些应用程序设置.但是,当我尝试修改数据时,我收到一个错误The property 'Properties.Settings.Test' has no setter,因为这是生成的,我不知道我应该怎么做才能改变它,因为我以前的所有C#项目都没有这个问题.
我有一个需要存储数据的应用程序.目前,我使用内置的应用程序设置来完成它,但它只给我两个选择:应用程序和用户范围.理想情况下,我想要一个"本地"范围,允许应用程序在另一个用户下运行,仍然可以找到它的数据,而不是为该用户重新创建它.应用程序范围可以执行此操作,但它是只读的.应用程序数据将由用户更改.如果只允许管理员对数据进行更改,则可以.
正如您可能猜到的,我有一个管理工具,允许用户更改数据和Windows服务运行器,它可以读取数据并对其执行某些操作.如果Windows服务运行器访问管理工具创建的数据,那将是很好的.
我只是想知道它为什么Settings.Default.<mysetting>而不仅仅是Settings.<mysetting>?
我正在构建一个新版本的Windows窗体应用程序,它可以安装在各种不同的PC上.该应用程序由技术人员安装,在安装期间配置不同的应用程序,用户和其他设置.到目前为止,我一直在注册表中存储这些设置,并且在应用程序的每次启动时它都会读取注册表以获取不同的值.如果我们需要更改注册表中的任何设置,我们可以直接在reg(经验丰富的技术人员)或通过重新安装(新手技术人员)的应用程序中进行更改.
由于我现在正在构建一个新版本,我想知道处理这些类型设置的最佳实践是什么.我想将它从注册表中移出并进入某种类型的og设置,资源,xml文件,我可以在安装过程中直接操作,然后在应用程序内或通过专为技术人员设计的帮助应用程序.
那么,为Windows窗体应用程序存储和编辑应用程序和用户特定设置的首选方法是什么?
Applicatin是一个Win 32位VB.Net桌面表单应用程序.
settings app-config application-settings settings.settings winforms
我有一个代码库,已用作ASP.Net Web应用程序.它现在已经扩展并被用作两个WinForms应用程序的一部分.
主要区别在于WinForms应用程序应"按用户"存储其设置,而Web应用程序只需将设置存储在"应用程序"级别.它们是相同的设置,但根据应用程序的类型存储不同.
澄清:相同的代码将用作网站应用程序的基础以及桌面应用程序的代码库.在桌面应用程序中,设置应存储在相应的用户目录中,但是当相同的代码运行Web应用程序时,这是不可行的.因此进退两难.如何从Web应用程序的web.config类型情况切换到桌面应用程序的user.config类型情况(存储在正确的目录中).
有谁知道settings.settings文件是否适用于Web应用程序?
有没有更好的方法以两种不同的方式存储相同的设置?
有时(并非总是),当我在"我的项目"页面中编辑设置时,当我添加一个或从那里编辑一个值时,我收到一个错误: 'Settings is ambiguous between declaration in Modules '<project>.My.MySettingsProperty' and '<project>.My.MySettingsProperty'
Visual Studio创建副本My Project\Settings.Designer.vb,并在.vbproj文件中注册它们.
发生这种情况时,我需要删除Settings.Designer.vb,删除Settings1.Designer.vb中的"1",并删除vbproj文件中对它的引用.
当我编辑Telerik ORM模型(复制到designer1.vb的designer.vb文件)时,也会发生这种情况,但是在这种情况下,designer.vb文件在之后是空的.
这是另一个问题的描述,由其他人(自2009年以来没有答案,除了我的):http://social.msdn.microsoft.com/Forums/en-AU/vbide/thread/29e7b9ff-5cdc -456b-9d2f-bc85145e8eaf
你能想到一个可能的来源,但更重要的是,可能的解决方案?
我使用的是Visual Studio 2008 Standard,几个月前这个问题没有发生.
谢谢
我正在阅读有关applicationSettings的文章和论坛帖子,差不多一个星期了.
在几乎每个线程中都有人似乎正确地指出类库在部署时不能有配置文件,并且必须在主机/的应用程序的可执行文件 .exe.config配置文件中指定/合并其设计中的applicationSettings.消耗dll.
不一定是真的.
您可以但不需要合并它们类库设置,除非您希望为用户提供"覆盖"默认值的方法 - 使用在程序集中硬编码的DefaultValueAttribute指定的默认值.
所以,对于一个非常简单,实用的例子.让我们使用VB.NET 1.我创建了一个名为ClassLibrary的类库项目.2.显示所有文件,展开MyProject,双击Settings.settings.3.添加名为Message的设置,应用程序作用域,其值为"Hello!".4.在Class1.vb中创建一个属性(自动添加的类)
Public Class Class1
Public Shared ReadOnly Property Message As String
Get
Return My.Settings.Message
End Get
End Property
End Class
Run Code Online (Sandbox Code Playgroud)
在已创建的Form1上添加一个按钮,然后双击它.8将一些代码添加到Button1_Click处理程序.应该是这样的.
公共类Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
MessageBox.Show(ClassLibrary.Class1.Message)
End Sub
Run Code Online (Sandbox Code Playgroud)
结束班
让WinForm"设置为启动项目"
现在,在IDE中,一切都很美妙.运行解决方案,您将获得预期的Hello!当你按下按钮.如果你去更改库的app.config中的设置,说"再见!" 然后你再次运行解决方案,你会得到一个"再见!"
但是,右键单击WinForm项目并"在资源管理器中打开"并转到Debug文件夹.还没有WinForm.exe.config文件.让我们快速创建一个.切换回VS并在选择WinForm项目时单击以显示所有文件.展开MyProject,打开Settings.settings,创建一个设置(doens't what what)并保存.我们去了,创建了一个App.config,如果我构建了这个解决方案,Debug文件夹将包含一个WinForm.exe.config.
告诉我如何从类库配置中合并我的Message设置
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="ClassLibrary.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<ClassLibrary.My.MySettings>
<setting name="Message" …Run Code Online (Sandbox Code Playgroud) 它看到我无法写入LG-P500(Android 2.2)中的设置.这是我的代码:
android.provider.Settings.System.putInt(getContentResolver(), android.provider.Settings.System.AUTO_TIME, 1);
Run Code Online (Sandbox Code Playgroud)
用于指定用户是否更喜欢从网络(NITZ)自动提取日期,时间和时区的值.1 =是,0 =否
它在我的模拟器android 2.2中工作正常我也尝试在其他手机,HTC android 2.1它也工作正常.
谁能知道会出现什么问题?非常感谢你.
我在Visual Studio 2008项目中使用.Settings文件,该文件从PublicSettingsSingleFileGenerator自定义工具自动生成一个Settings.Designer.cs文件.
这工作正常,但我也想在编译选项中启用"警告为错误",强制每个人保持XML注释的最新,但我不知道如何为自动内的所有元素添加注释生成的代码.
通过在设计视图中选择元素并在属性窗口中添加"描述",可以添加实际属性.但似乎没有办法为类声明或默认实例属性执行此操作.
重现此问题的步骤如下
这是在PublicSettingsSingleFileGenerator Settings.Designer.cs文件中生成的代码
namespace SettingsTest {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
public sealed partial class Settings1 : global::System.Configuration.ApplicationSettingsBase {
private static Settings1 defaultInstance = ((Settings1)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings1())));
public static Settings1 Default {
get {
return defaultInstance;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
不确定这个额外的信息是否应该成为问题部分的一部分,因为它在某种程度上指向答案
根据此链接,应用于该类的属性似乎是错误的.
" CompilerGenerateAttribute - 此属性仅供编译器使用,表示特定的代码元素是编译器生成的.这绝不应该在源代码中使用."
" GeneratedCodeAttribute - 此属性供生成代码的自定义工具使用.它应仅应用于反复重新生成的代码,不应由用户需要修改的模板使用.也不应该应用在类型级别,如果生成的类型是部分类.在这种情况下,它应该仅应用于生成的类型部分中包含的各个成员."
更新
我在Microsoft Connect网站上为此提出了一个错误报告,并且会在我们获取更多信息时更新并接受答案http://connect.microsoft.com/VisualStudio/feedback/details/634692/publicsettingssinglefilegenerator-code-失败-当-治疗-警告-为-错误-被设置到全和XML的文档,是上
这就是我想要做的事情:
到目前为止,这是在逃避我.
我有一个自定义类型:
[TypeConverter(typeof(ServiceConfigurationConverter))]
[Serializable]
public class ServiceConfiguration
{
public string Name { get; set; }
public string Url { get; set; }
// more
}
Run Code Online (Sandbox Code Playgroud)
它有一个自定义TypeConverter,可以从字符串来回转换它.我这样编写它是因为我发现的示例都是为了转换为字符串,因为如果它意味着我的值被保存到app.config,我会愿意序列化为字符串.但正如我们将要看到的,它们不是.
如果我指示(通过直接编辑Settings.settings文件)该设置的类型MyNamespace.ServiceConfiguration[],我可以手动输入XML来表示数组.(我通过编写一个以编程方式构建数组的测试来获取XML,然后使用它进行序列化XmlSerializer.)但是,虽然这个XML在Settings.designer.cs中设置为设置的默认值,但它不会保存到app的.config.
这是有问题的,因为我希望人们能够在app.config中以XML格式查看属性值,并且能够在需要时更改它们.如果它没有从app.config中写入和读取,则它不是运行时可配置的.
如果我在app.config中手动创建一个条目applicationSettings,然后在我的序列化数组中输入作为设置的值,设置设计器会询问我是否要更新设置文件值,并且这样做 - 但是删除了我放入的条目在下applicationSettings.
如果有必要,我愿意考虑为我的自定义类型编写某种设计师,但我不知道会是什么样的设计师.
(我知道如果我只是将属性类型更改为"string",我可以将序列化的XML保存为字符串并避免这个问题.但我想要的是一个属性,其类型是我的自定义类型,而不是我有的重建.)
任何人都可以告诉我如何使用自定义类型在这篇文章的顶部实现三个目标?
非常感谢.
c# designer typeconverter visual-studio-2010 settings.settings