从web.template.xml web.config中变换不工作(web.config tran

2019-06-26 16:03发布

我试图让web.config文件转换为工作描述这里 。 我们已经用在其他项目上这个方法,它的工作原理没有问题,但不能在这个新项目。

以下是我已经试过测试没有成功

  • 如果更改wpp.targets文件的名字,我得到了这个项目的名字拼错了。 我知道我使用的作品,因为它导致的web.config从web.template.xml此转换工程重建的唯一一个当前之一。 只有子模板不起作用。
  • 试图用XDT:定位器=“匹配(名称)”
  • 试图扩展名为.config VS .XML,我们的其他项目中这个工程使用的.xml
  • 配置管理器被设置为使用我的工作项目中的“测试”配置。
  • web.template.Test.xml有XDT:转换=“替换”因为我想更换部分
  • web.template.xml有占位符
  • 试穿下面链接的堆叠问题的建议除去wpp.targets的“CopyWebTemplateConfig”部分。 我们的其他项目有这个和“的PropertyGroup”部分注释掉,我都试过组合。

我已经通过上面的链接多次阅读和这个相关的堆栈问题 ,但看不出有什么问题。

注意发布变换做的方式工作。 它创建一个包含从web.template.Test.xml值的web.template.xml文件,但作为wpp.targets指示不创建web.config.xml。 因此,这是越来越构建变换工作似乎更成问题的。

任何人有什么遗漏的想法?

wpp.targets

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <!-- Make sure web.config will be there even for package/publish -->
  <Target Name="CopyWebTemplateConfig" BeforeTargets="Build">
    <Copy SourceFiles="web.template.xml"
          DestinationFiles="web.config"/>
  </Target>

  <PropertyGroup>
    <PrepareForRunDependsOn>
      $(PrepareForRunDependsOn);
      UpdateWebConfigBeforeRun;
    </PrepareForRunDependsOn>
  </PropertyGroup>

  <!-- This target will run right before you run your app in Visual Studio -->
  <Target Name="UpdateWebConfigBeforeRun">
    <Message Text="Configuration: $(Configuration): Web.template.$(Configuration).xml"/>
    <TransformXml Source="web.template.xml"
              Transform="web.template.$(Configuration).xml"
              Destination="web.config" />
  </Target>

  <!-- Exclude the config template files from the created package -->
  <Target Name="ExcludeCustomConfigTransformFiles" BeforeTargets="ExcludeFilesFromPackage">
    <ItemGroup>
      <ExcludeFromPackageFiles Include="web.template.xml;web.template.*.xml"/>
    </ItemGroup>
    <Message Text="ExcludeFromPackageFiles: @(ExcludeFromPackageFiles)" Importance="high"/>
  </Target>
</Project>

web.template.xml

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->
<configuration>
  <configSections>           
    <sectionGroup name="TestSettings"></sectionGroup>
    ....
  </configSections>
    ....
  <TestSettings>
  </TestSettings>
   ....
</configuration>

web.template.Test.xml

<?xml version="1.0"?>
<!-- For more information on using transformations 
     see the web.config examples at http://go.microsoft.com/fwlink/?LinkId=214134. -->
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <TestSettings xdt:Transform="Replace">
    ...
  </TestSettings>
</configuration>

MSBuild的输出

Target "UpdateWebConfigBeforeRun: (TargetId:143)" in file "C:\...\Project.wpp.targets" from project "C:\...\Project.csproj" (target "PrepareForRun" depends on it):
Task "Message" (TaskId:93)
  Configuration: Test: Web.template.Test.xml (TaskId:93)
Done executing task "Message". (TaskId:93)
Task "TransformXml" (TaskId:94)
  Transforming Source File: Web.template.xml (TaskId:94)
    Applying Transform File: Web.template.Test.xml (TaskId:94)
    Executing Replace (transform line 5, 18) (TaskId:94)
      on /configuration/TestSettings (TaskId:94)
      Applying to 'TestSettings' element (source line 121, 4) (TaskId:94)
      Replaced 'TestSettings' element (TaskId:94)
    Done executing Replace (TaskId:94)
    Output File: web.config (TaskId:94)
  Transformation succeeded (TaskId:94)
Done executing task "TransformXml". (TaskId:94)
Done building target "UpdateWebConfigBeforeRun" in project "Project.csproj".: (TargetId:143)

Answer 1:

我已经安装StyleCop和正在做的覆盖我。

所以我卸载它和问题解决。

搞笑的是,我重新安装StyleCop和转换还在工作!

此外,在一些点,我注意到,我应该删除CopyWebTemplateConfig目标部分为好。



Answer 2:

我有一个解决我的问题,但不知道原因是什么,所以不知道这是否会在其他情况下解决这个问题。

我回顾了MSBuild的诊断的输出,并注意到朝到底有是复制web.template到web.config中的另一个部分。 请注意,这是后UpdateWebConfigBeforeRun目标已经运行并提出从子模板及其更新转换文件web.config中。 它看起来像这最后一步是压倒一切的web.config中与变换我想要的。

我不知道在哪里这最后一组复制的指令是从哪里来的,所以我做了寻找其他wpp.target文件在我的电脑上的所有文件进行搜索。 我发现了一个又一个在慢猎豹的扩展文件夹,看到一些部分向上顶这是设置属性“transformOnBuild”为假。

思考有一个与SlowCheetah冲突,我卸载它和转换开始按预期工作。 这仍然是一个有点古怪,因为与SlowCheetah工作的其他解决方案启用。 心血来潮我重新安装SlowCheetah和改造继续按预期运行。

所以,我的解决方案最终被SlowCheetah的重新安装。 我仍然感到困惑的是什么这个问题的原因是,如果其他人张贴一个答案我给他们的赏金。



Answer 3:

上周我也有过类似的问题。 原来,只要添加一个项目,在VS 2010的解决方案正确的项目配置不应用所有的时间。 所以,你认为你有一个配置有效,但另一实际上是活跃于该项目,因此你所期望的转变没有得到应用。

检查这个问题的最后意见的步骤: 自定义解决方案的配置没有出现在Visual Studio 2010中达



Answer 4:

“我知道我使用的作品,因为它导致的web.config从web.template.xml重建这个变换工作只有一个当前的一个,只有子模板不起作用。”

这是否意味着,转型的作品,但TestSettings单独部分没有得到改变?

你能分享建立与冗长的MSBuild输出为诊断/详细?



Answer 5:

我写了一篇博客文章中有关此主题。 我在我们的web应用程序的日常使用。 我写的博客文章,因为在slowcheetah的功能还没有准备好。 http://www.locktar.nl/general/use-config-transforms-when-debugging-your-web-application/



文章来源: web.config transform from web.template.xml not working