Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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
Vb.net 类库中web.config的等效项_Vb.net_Class Library_Asp.net 4.5 - Fatal编程技术网

Vb.net 类库中web.config的等效项

Vb.net 类库中web.config的等效项,vb.net,class-library,asp.net-4.5,Vb.net,Class Library,Asp.net 4.5,我有三个web应用程序,它们都访问同一个数据库。那里有很多重复的代码,所以我想把所有的普通东西都放到一个新的项目中,每三个应用程序都可以引用 首先,我假设类库是实现这一点的最佳工具? 其次,我应该在类库中的什么位置存储以前在web.config中的连接字符串设置 在ASP.NET中,我目前正在执行以下操作: Web.config <connectionStrings> <clear/> <add name="A" connectionString="

我有三个web应用程序,它们都访问同一个数据库。那里有很多重复的代码,所以我想把所有的普通东西都放到一个新的项目中,每三个应用程序都可以引用

首先,我假设类库是实现这一点的最佳工具? 其次,我应该在类库中的什么位置存储以前在web.config中的连接字符串设置

在ASP.NET中,我目前正在执行以下操作:

Web.config

<connectionStrings>
    <clear/>
    <add name="A" connectionString="Persist Security Info=False; User ID=user; Password=pass; Initial Catalog=myDb; Data Source=localhost; Connection Timeout=60" providerName="System.Data.SqlClient"/>
    <add name="B" connectionString="Persist Security Info=False; User ID=user2; Password=pass2; Initial Catalog=myDb; Data Source=localhost; Connection Timeout=60" providerName="System.Data.SqlClient"/>
</connectionStrings>

我已经搜索了答案,但只能从单独的项目中找到访问web.config文件的答案,这是不同的。

您必须添加一个app.config文件进行配置。但是当从类库读取时,必须使用位于入口点可执行项目上的app.config

想象一下以下项目:

-ClassLibrary.dll(带)

-ConsoleProgram.exe(带)

控制台编程是您必须在其中放置应用设置(在app.config中)的项目,然后您可以使用类库中的SettingsReader读取它们

如果确实要从dll程序集读取设置,可以插入app.config并将该文件设置为“嵌入式资源”,以便使用程序集读取该文件

大概是这样的:

var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyApp.App.Config";

using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
    string result = reader.ReadToEnd();
}

谢谢我不需要直接执行这个类中的逻辑,所以我认为控制台应用程序不是正确的方法。那么,你是说除非我嵌入并读取整个内容,否则类库(dll)没有设置文件功能吗?我是说,如果你使用ConfigurationManager.AppSettings阅读器,它将读取可执行项目的app.config,而不是dll中的app.config。控制台应用程序只是一个例子。很好,谢谢。
- Class1.vb
- Class2.vb
- SettingsReader.vb
- Program.vb
- App.Config
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyApp.App.Config";

using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
    string result = reader.ReadToEnd();
}