Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用类库从web.config/app.config获取配置设置_Asp.net_Vb.net_.net 3.5 - Fatal编程技术网

Asp.net 使用类库从web.config/app.config获取配置设置

Asp.net 使用类库从web.config/app.config获取配置设置,asp.net,vb.net,.net-3.5,Asp.net,Vb.net,.net 3.5,3.5中的配置设置让我抓狂。。。救命 我有一个类库(名为ADI),它需要使用它的项目中的一些配置设置(如connectionstring、文件系统位置等) 我想在我的Windows窗体/Web项目App.Config或Web.Config中定义这些设置,就像其他设置一样 以下是我的windows窗体应用程序的my app.config的一部分: <applicationSettings> <PhotoImportRobot.My.MySettings>

3.5中的配置设置让我抓狂。。。救命

我有一个类库(名为ADI),它需要使用它的项目中的一些配置设置(如connectionstring、文件系统位置等)

我想在我的Windows窗体/Web项目App.Config或Web.Config中定义这些设置,就像其他设置一样

以下是我的windows窗体应用程序的my app.config的一部分:

<applicationSettings>
    <PhotoImportRobot.My.MySettings>
      <setting name="ADIImageRoot" serializeAs="String">
        <value>C:\DataTemp\ADI\Original\</value>
      </setting>
      <setting name="ADIImageVariantsRoot" serializeAs="String">
        <value>C:\DataTemp\ADI\Variants\</value>
      </setting>
    </PhotoImportRobot.My.MySettings>
</applicationSettings>

怎么办?

如果您不需要结构化设置,appSettings部分只会获取键值对:

<appSettings>
  <add key="ADIImageRoot" value="C:\DataTemp\ADI\Original\" />
  <add key="ADIImageVariantsRoot" value="C:\DataTemp\ADI\Variants\" />
</appSettings>
如你所料


或者,如果您的配置需要更多的结构(即不仅仅是字符串或一组设置),您可以使用自己的配置部分,使用,及其相关部分进行研究。

您似乎正在使用visual studio中内置的设置。这将生成一个与文件相关的包装类,在您的例子中称为
MySettings


因此,您可以编写类似于
MySettings.Instance.adImageVariantsRoot
的内容。(如果单击“项目工具箱”中的“显示所有文件”,它将显示.settings.cs文件,您可以看到所有详细信息)

添加参考
System.web
添加名称空间和用户名称

using System.Web.Configuration;    

String webConfigValue;
            webConfigValue = WebConfigurationManager.AppSettings["employeeDB"].ToString();
读取web配置值的步骤

<appSettings>
        <add key="employeeDB" value="Data Source=servername;Initial Catalog=employee;Persist Security Info=True;User ID=userid;Password=password;"/>        
</appSettings>

对于应用程序设置,您应该使用:

[YourNamespace].Properties.Settings.Default.[YourSettingName]
System.Web.Configuration.WebConfigurationManager.AppSettings
这将提供对设置的强类型引用,如果web.config文件中未定义默认值,则返回默认值。对于应用程序设置,您应使用:

[YourNamespace].Properties.Settings.Default.[YourSettingName]
System.Web.Configuration.WebConfigurationManager.AppSettings

我决定改用旧的appsettings——这很管用。我还编写了一个包装器来检查它是否存在,如果不存在则抛出一个错误。是的-如果没有提供ArgumentNullException,则抛出ArgumentNullException可能是一种方法。@alperebicoglu我不相信它们是重复的:这个人知道区别,想知道如何从相应的配置文件中移动和读取设置,另一个想知道表单(app.config)或ASP.NET(web config)配置文件之间的区别是什么。OP(和我)想知道如何从类库中读取设置。@Code Blue:谢谢您的评论。在这种情况下,将.settings(以及生成的代码)移动到所述类库中,但确保将放入库的app.config的设置(如果有)复制到exe的app.config中。(没有好办法让它自动将默认值同步到外部项目)