C# .NET.config地狱
我有以下项目:C# .NET.config地狱,c#,.net,configuration,web-config,app-config,C#,.net,Configuration,Web Config,App Config,我有以下项目: MVC 控制台应用程序 类库 Windows窗体应用程序 COM库 所有这些应用程序都需要使用单个配置文件。据我所知,app.config文件用于windows、控制台应用程序和类库,而web.config文件用于web项目 在所有这些项目中都需要可以访问相同的配置。我已经读到建议使用机器配置文件,但我们并不总是能够访问该文件,因此配置文件必须驻留在我们的解决方案中 我不完全理解配置文件是如何生成的。目前我写了一个简单的项目,我有以下几点: 用于存储服务配置文件的类库。有人试图通
_applicationSettings = ConfigurationManager.OpenExeConfiguration(
System.Reflection.Assembly.GetAssembly(typeof(WCSConfiguration)).Location
).AppSettings;
我得到的是一个空的应用程序设置文件
类库具有以下App.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="TestTextKey" value="TestTextValue"/>
</appSettings>
</configuration>
我尝试过使用.getExecutionGassembly()
方法,我希望该方法返回当前正在执行的代码的程序集。这不起作用,而是返回了Windows应用程序的程序集
GetAssembly(type(WCSConfiguration))
返回了正确的程序集,但是bin/debug目录中缺少配置文件
我有一种感觉,要么是我做了一些根本错误的事情,要么是微软没有足够的灵活性。我也试着搜索MSDN的解释,但在IMO中并没有很好的记录
我还将COM保留为粗体,因为我不确定COM库是否可以使用任何配置文件。首先,我想让其他项目工作
我知道这是很多信息。任何帮助都将不胜感激。以前我们选择使用注册表,但结果证明这很糟糕,主要是因为在某些情况下无法访问注册表。此外,我们现在有多个版本的应用程序,在分支之间切换只需半小时:(
多谢各位
编辑:
如果我将dll的配置部分添加到app.config,这意味着这些设置将仅从该应用程序中可用。如果我错了,请更正我。我提供的示例是一个缩小的版本。总共大约有十个windows应用程序、一个MVC项目和一系列类库,所有这些都需要使用这是一种配置
配置设置主要是连接字符串、不属于数据库的查找值和少数其他次要设置。此时主要关注的是连接字符串。应用程序的次要版本很少,每个版本都指向不同的数据库
我想从中得到的是一个很好的可行的解决方案,这样它就可以发布到网上,其他遇到同样问题的人就不会花很多天的时间
故事的士气IMO:
使用App.config和Web.config存储您自己的配置文件的位置
编写简单的XML序列化程序来读/写配置和DLL,以便为配置提供服务
COM对象说来话长,是通过“黑客”实现的,因为App.config或Web.config在COM dll中都不可用。有几个一般要点——将dll的配置部分添加到App.config文件中,而不是依赖dll的配置文件来获取;而App.config在生成时实际上被重命名为.exe.config,因此需要确保该名称的文件可用 此外--您不必使用默认的配置加载机制来配置应用程序。您可以创建自己的配置类,只需使用XML序列化即可任意进行反序列化和配置。注意,需要传递配置文件的文件名,而不是可执行文件 您需要将
.config
附加到可执行文件的路径。若要获取可执行文件程序集,请使用
如果您有要在多段代码之间共享的配置设置,但这些代码并不都在同一个.NET进程中,我建议您:
- 将它们放在自己的
中myStuff.config
- 在.NET代码中,使用
打开并访问ConfigurationManager.OpenExeConfiguration
myStuff.config
- 非.NET代码将需要使用XML解析器来加载和读取设置
- 在为.NET应用程序共享此配置的每个应用程序的app.config中,放置指向
的路径。(非.NET应用程序:取决于该应用程序的工作方式。)myStuff.config
另一种方法是,配置结构相同,但每个应用程序的设置都是自定义配置节。Hi.如果我将dll的配置节添加到app.config,这意味着这些设置将仅从该应用程序可用。我这样说对吗?我提供的示例是一个按比例缩小的示例总共有大约十个Windows应用程序、单个MVC项目和类库范围,所有这些都需要利用该配置。我将认真考虑不使用默认.NET机制,而是创建一个独立的配置库,它可以从您自己的XML序列化CON中提供配置信息。fig类。也就是说,在.NET 2+中,您还可以重定向到非默认配置文件——例如,在MSDN中查找ConfigurationManager.OpenMappedExconfiguration,对于.NET应用程序,它至少可以让您