我无法在网上找到我的问题的例子,并且想知道是否有人知道解决方案。基本上,如果在我们的web.config上,我们指向另一个文件,如:
<configuration>
<configSections />
<appSettings file="AppSettings.config">
</configuration>
那么我们如何将转换应用于该外部文件?
基本上,我想创建一个AppSettings.config,AppSettings.Debug.config,AppSettings.Release.config并对其进行转换...这甚至可能吗?
提前致谢,
塞尔吉奥
答案 0 :(得分:30)
解决方法很少:
解决方法1
AppSettings.Debug.config
,AppSettings.Release.config
web.config
中,使用转换,替换为相应的文件: <强> web.debug.config
强>
<appSettings file="AppSettings.debug.config"
xdt:Transform="SetAttributes" xdt:Locator="Match(file)"/>
<强> web.release.config
强>
<appSettings file="AppSettings.release.config"
xdt:Transform="SetAttributes" xdt:Locator="Match(file)"/>
它不太理想,有点挫败了变换的目的,但可能基于一个人的情况而不是使用像SlowCheetah这样的东西。
转换文件解决方法2
答案 1 :(得分:8)
有一个名为Slow Cheetah的Visual Studio插件项目,它采用了转换的概念,并允许您将其应用于web.config以外的文件,我还没有使用它,但我认为它会做你做的事情想做。斯科特汉塞尔曼做了一个blog。
答案 2 :(得分:0)
已接受的答案中的解决方法1使我走上了正确的轨道,但由于转换不太正确,因此无法正常工作。正确的转换就是
<appSettings file="AppSettings.debug.config"
xdt:Transform="SetAttributes"/>
我必须删除xdt:Locator =“ Match(file)”,以便更改文件属性本身。 Web Config Transformations解释说Match(key)将找到要更改的元素,但只会更改节点的其他元素,而不是定位器/匹配键本身。每个配置文件只有一个appSetting,因此我们无需查找特定实例。
(我没有足够的声誉来评论接受的答案,所以我将其发布为另一个答案。)