【发布时间】:2012-04-30 23:58:34
【问题描述】:
我要做什么
目前,我们的解决方案中的多个项目中有重复的 WCF 配置设置。我想将 WCF 配置值存储在一个文件中,然后可以根据需要从尽可能多的项目中引用该文件。配置文件必须可转换以允许在不同环境中使用不同的值。
我的尝试
我做了一些研究,其他人已经尝试过使用 SlowCheetah 和链接文件的类似方法。所以这就是我试图做的。值得注意的是,我们的解决方案包含很多项目,一些 MVC3、一些控制台应用和一些类库。
- 我创建了一个 Wcf.Client.config 文件,将其添加到一个通用类库中,并使用 SlowCheetah 添加了转换
- 我想在 MVC3 项目中引用此文件,因此我创建了指向配置文件的链接
- 在 MVC3 项目的 web.config 文件中,我添加了一个组,该组包含一个客户端元素,其 configSource 属性设置为“Wcf.Client.config”
- 我已将链接配置文件的“复制到输出目录”属性设置为“如果较新则复制”
- 我还向链接文件添加了转换(我不确定这是否可行,但它成功链接了文件)
问题
我对本地和开发环境进行了转换。不幸的是,当我在开发人员配置中运行 Web 应用程序(或发布它)时,没有拾取转换。查看发布的文件我可以看到我放在web项目根目录中的链接文件已经成功转换,但是,它是从bin文件夹中读取的,bin文件夹中的文件是not 转换。
我到底在问什么?
我真正想知道的是,我做错了什么?有没有人尝试过我上面描述的并使它起作用?或者失败了,有没有人找到另一种方法来共享转换后的配置文件?
一些代码
我创建了一个非常简单的test project,希望它能比我漫无边际的解释更好地解释我想要做的事情。随意看看。如果您构建或发布它,您将看到 MVC3 项目的 bin 文件夹中的 Wcf.Client.config 文件尚未转换。
【问题讨论】:
-
菲尔,你有什么运气吗?我们正在寻求做类似的事情......
-
恐怕不行。我没有设法让 SlowCheetah 按我的意愿工作,我也没有设法找到另一个解决方案。不幸的是,我在这个问题上浪费了相当多的时间,所以我只需要处理重复的配置,这很垃圾,但它们很少会改变,所以不会造成任何问题。
-
你能试试我刚刚发布到visualstudiogallery.msdn.microsoft.com/…的最新版本2.5.1吗?让我知道它是否不起作用。大约一两个月前,我为链接文件做了很多工作。
-
我已经用 2.4.1 重新测试了它(我找不到 2.5.1 不确定它是否是一个错字),不幸的是我没有运气。还是不行。
-
我得到了这个工作。如果您查看 v 2.5.1 或更高版本中的 SlowCheetah.Samples/Wpf.Transform/Wpf.Transform.csproj,您可以看到链接的配置文件在 csproj 中的外观。我必须将
、 和 元素添加到我的(在链接到另一个项目中的配置的项目上)。
标签: asp.net-mvc-3 web-config slowcheetah