我有以下问题:
我们有一个加载模块的应用程序(添加).这些模块可能需要app.config中的条目(例如WCF配置).因为模块是动态加载的,所以我不希望在我的应用程序的app.config文件中包含这些条目.
我想做的是以下内容:
注意:我不想覆盖默认的app.config!
它应该透明地工作,以便例如ConfigurationManager.AppSettings使用该新文件.
在我这个问题的评价,我用同样的解决方案提出了为这里提供:刷新的app.config与NUnit的.
不幸的是,它似乎没有做任何事情,因为我仍然从正常的app.config获取数据.
我用这段代码来测试它:
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
var combinedConfig = string.Format(CONFIG2, CONFIG);
var tempFileName = Path.GetTempFileName();
using (var writer = new StreamWriter(tempFileName))
{
writer.Write(combinedConfig);
}
using(AppConfig.Change(tempFileName))
{
Console.WriteLine(ConfigurationManager.AppSettings["SettingA"]);
Console.WriteLine(Settings.Default.Setting);
}
Run Code Online (Sandbox Code Playgroud)
它打印相同的值twices,虽然combinedConfig包含除正常app.config之外的其他值.
我在我的解决方案中添加了一个现有的ASP.Net Web应用程序项目.除了标准的调试和发布配置,该解决方案还有两个自定义配置,SAT和UAT.对于新的Web应用程序,右键单击Web.Config显示上下文菜单,但"添加配置转换"选项显示为灰色.
我不知所措.新项目是一个Web应用程序.Configuration Manager不显示此项目的两个自定义配置,但它适用于其他项目.项目似乎在解决方案文件中具有正确的条目.
思考?
在.NET MVC 3.0应用程序中,我有以下配置appSettings:
<appSettings>
<add key="SMTPHost" value="mail.domain.com"/>
<add key="SMTPUsername" value="user@gmail.com"/>
<add key="SMTPPort" value="25"/>
<add key="SMTPPwd" value="mypassword"/>
<add key="EmailFrom" value="notific@gmail.com"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)
为了调试,我定义了以下配置转换:
<appSettings>
<add key="SMTPPort" value="58" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
我在调试模式下运行应用程序,但我的SMTP端口仍然从web.config,而不是web.Debug.config.
任何人都可以建议这种配置可能出错吗?
asp.net asp.net-mvc web-config web-config-transform slowcheetah
是否可以为web.config的特定部分分别配置文件?具体来说,我想将IIS 7的重写部分移出web.config并进入它自己的配置文件.
我正在玩如何使用Configuration Manager在App.config文件中读取/写入C#中的WPF应用程序的自定义部分.我阅读了关于.NET 2.0 Configuration Demystified的这篇优秀文章,它在使用配置文件方面给了我很多帮助.这是我写的初始App.config文件,它工作正常.
App.config中
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="example" type="CustomConfig.ExampleSection, CustomConfig" />
</configSections>
<example version="A sample string value." />
<appSettings>
<add key="version_string" value="1.01" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
但当我更改App.config文件时,我的自定义部分将从configSource中提到的外部配置文件中读取,Visual Studio给出了一个错误
configSource文件的格式必须是包含该部分名称的元素.
以下是App.config和example.config文件
更改了App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="example" type="CustomConfig.ExampleSection, CustomConfig" />
</configSections>
<example configSource="example.config" />
<appSettings>
<add key="version_string" value="1.01" />
</appSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
example.config
<?xml version="1.0"?>
<example>
<add key="version" value="blahblah" />
</example>
Run Code Online (Sandbox Code Playgroud) 我有一个包含 2 个项目的解决方案:Proj1 和 Proj2,其中 Proj1 是启动项目。
Proj1 引用 Proj2(为了调用 Proj2 的类)并且它有现有的代码,该代码还引用了一个名为 A 的第 3 方 DLL,版本为 1.0.0.0。
Proj2 引用了相同的第 3 方 DLL A,但它在 2.0.0.0 版中引用了它,因为该项目中的类需要较新的实现,而 1.0.0.0 中没有。
到目前为止,我已经尝试了以下操作: 1. 引用 A 时将“特定版本”切换为 true 2. 在 Proj2 中添加了一个名为“v2Folder”的文件夹并将 A v2.0.0.0 添加到其中,将其“复制到输出目录” " to Copy Always 3. 向 app.config 添加了“探测路径”以指向带有 v2.0.0.0 DLL 的子文件夹
我想要的是在普通\bin\文件夹中看到A v1.0.0.0,在\bin\v2Folder中看到A v2.0.0.0,我希望当我运行我的Proj1.exe时,Proj1的旧代码仍然会调用A v1.0.0.0的方法,调用Proj2实现的只调用A v2.0.0.0的方法。
问题是,当我构建我的解决方案时,v1.0.0.0 被 v2.0.0.0 取代,构建日志中有类似“无法解决“A、版本 = 2.0.0.0、文化 = 中性、 PublicKeyToken=blah”和“A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=blah”。任意选择“A, Version=2.0.0.0, Culture=neutral, PublicKeyToken=blah”。
有人可以帮忙吗?
.net ×3
asp.net ×3
c# ×3
app-config ×2
web-config ×2
asp.net-mvc ×1
dll ×1
iis-7 ×1
slowcheetah ×1
transform ×1