在我的VS 2010解决方案中,我有四个网络项目。
第一个项目是开发项目。其他三个仅用于发布第一个项目页面的不同子集。其他三个项目中的几乎所有文件都是第一个项目文件的链接。
所有项目共享相同的web.config(从第一个项目链接)。
我想要实现的是根据正在发布的项目对web.config进行不同的xml转换。 “添加配置转换”选项仅适用于文件实际位于的第一个项目。您似乎无法为链接的web.config添加配置变换。添加了转换,但它们似乎没有引用链接的web.config,它们似乎没有被执行。
我试图手动弄乱* .csproj文件,以便我可以使这些转换引用链接文件,但我无法使其工作。
有没有办法让xml配置转换为链接的web.config?
解决方法
我刚刚使用了下面的解决方法:
我为每个项目创建了正常的web.config文件(没有指向第一个项目的web.config的链接)。我在每个项目的web.config中添加了我想要的转换。然后,在每个项目中,我添加了一个Before Build事件,该事件将第一个项目的web.config复制并覆盖到当前项目的web.config。这样,转换就会在新覆盖的配置文件上执行,并且会发布正确的配置。
我的问题仍然有效。
答案 0 :(得分:1)
Yo可以将项目文件中的任何转换源/模式写入/重写到任何路径。
我有一个独立应用程序的真实示例。在答案帖的底部解决你的问题。
我有两个项目的解决方案:
1.源项目" NetrikaLabManager"用真正的App.config和两个转换配置(App.Debug.config和App.Release.config)
2.目标项目" NetrikaLabManagerGui"我想要与第一个项目具有相同转换规则的相同配置。
我接下来的步骤是:
<Target Name="AfterCompile" Condition="Exists('app.$(Configuration).config')">
<Target Name="AfterCompile" Condition="Exists('..\NetrikaLabManager\App.$(Configuration).config')">
<TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
<TransformXml Source="..\NetrikaLabManager\App.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="..\NetrikaLabManager\App.$(Configuration).config" />
您的问题摘要 - 在每个项目文件中,您必须手动添加任何&#34; real&#34;将转换文件配置到您的卫星项目并离开&#34;转换&#34;和&#34;条件&#34;属性不变,但改变了&#34; Source&#34;您的Dev配置文件的path属性。这将为Dev config应用单独的卫星转换。