GAC + Config中的.NET程序集

时间:2010-03-25 15:15:05

标签: .net assemblies gac

我有一个.NET 3.5程序集,一个DAL,通过Linq2SQL连接到数据库。 我在GAC中部署此程序集,因为它可以被多个业务层使用。

问题是:在开发环境中,我的连接字符串与生产环境中的连接字符串不同。在将程序集部署到prod GAC之前,我需要使用适当的连接字符串重新编译它。

有没有办法允许独立于连接字符串将程序集部署到GAC,是从某个配置读取的信息?

5 个答案:

答案 0 :(得分:2)

无论是将程序集部署到GAC还是部署在网站的bin文件夹中,使用程序集的应用程序的配置都会覆盖LinqToSQL类中的连接。

创建数据上下文时,应该从配置中传递此连接字符串

答案 1 :(得分:0)

DAL是否在某处硬编码了连接字符串?如果是这样,那不是可配置部署的最佳选择。如果您有权访问DAL代码,请对其进行重构,以便将连接字符串作为构造其任何子类的参数。然后,任何使用的应用程序都可以使用其配置文件的connectionStrings部分来存储连接字符串。这样,您可以随时更改连接字符串。

答案 2 :(得分:0)

应该将您的连接字符串存储在您的web / app.config文件中,并在程序集中引用该配置设置。

连接字符串不应该是硬编码的,config文件有一个现有的connectionStrings部分用于此目的。

如果你需要保护你的连接字符串,你可以encrypt this section,但你不应该依赖它在GAC中作为保护,因为很容易使用ILDASM来查看程序集中的所有字符串(包括连接字符串)。

答案 3 :(得分:0)

IMO,我认为将特定于环境的值(如连接字符串)嵌入GAC程序集(或任何程序集)是错误的。相反,GAC中的组件应该允许将连接字符串传递给它。

答案 4 :(得分:0)

考虑更新您的MACHINE.CONFIG文件以添加您的连接字符串或其他配置部分。这将继承所有.NET应用程序。