2017-06-28 2 views
0

Es tritt ein Problem auf, wenn meine Gulp-Task die XMLTransform-Task ausführt und den gesamten Inhalt der Sitecore-Anwendung web.config anstelle von transformierenden Elementen ersetzt Warum nicht?Sitecore helix Apply-Xml-Transform ersetzt die gesamte web.config-Datei anstelle der Umwandlung

Ich habe 2x web.config.transform Dateien in verschiedenen Projekten in meiner Lösung, die beide über die XML-Dokument-Transform-Namespace, die bisher in ihnen sehr wenig haben .. Beispiel ist hier:

<?xml version="1.0" encoding="utf-8"?> 

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <runtime xdt:Transform="InsertIfMissing"> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" xdt:Transform="InsertIfMissing"> 
     <dependentAssembly xdt:Transform="InsertIfMissing"> 
     <assemblyIdentity xdt:Transform="InsertIfMissing" name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect xdt:Transform="InsertIfMissing" oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly xdt:Transform="InsertIfMissing"> 
     <assemblyIdentity xdt:Transform="InsertIfMissing" name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect xdt:Transform="InsertIfMissing" oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/> 
     </dependentAssembly> 
     <dependentAssembly xdt:Transform="InsertIfMissing"> 
     <assemblyIdentity xdt:Transform="InsertIfMissing" name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect xdt:Transform="InsertIfMissing" oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/> 
     </dependentAssembly> 
     <dependentAssembly xdt:Transform="InsertIfMissing"> 
     <assemblyIdentity xdt:Transform="InsertIfMissing" name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/> 
     <bindingRedirect xdt:Transform="InsertIfMissing" oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

<system.codedom xdt:Transform="InsertIfMissing"> 
<compilers xdt:Transform="InsertIfMissing"> 
    <compiler xdt:Transform="InsertIfMissing" xdt:Locator="Match(language)" language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" /> 
    <compiler xdt:Transform="InsertIfMissing" xdt:Locator="Match(language)" language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" /> 
</compilers> 
</system.codedom> 
</configuration> 

Mein gulpfile ist so ziemlich das Lager Standard Helix ein:

gulp.task("04-Apply-Xml-Transform", function() { 
var layerPathFilters = ["./src/Foundation/**/*.transform", "./src/Feature/**/*.transform", "./src/Project/**/*.transform", "!./src/**/obj/**/*.transform", "!./src/**/bin/**/*.transform"]; 
return gulp.src(layerPathFilters) 
    .pipe(foreach(function (stream, file) { 
     var fileToTransform = file.path.replace(/.+code\\(.+)\.transform/, "$1"); 
     util.log("Applying configuration transform: " + file.path); 
     return gulp.src("./scripts/applytransform.targets") 
      .pipe(msbuild({ 
       targets: ["ApplyTransform"], 
       configuration: config.buildConfiguration, 
       logCommand: false, 
       verbosity: "normal", 
       stdout: true, 
       errorOnFail: true, 
       maxcpucount: 0, 
       toolsVersion: config.buildToolsVersion, 
       properties: { 
        Platform: config.buildPlatform, 
        WebConfigToTransform: config.websiteRoot, 
        TransformFile: file.path, 
        FileToTransform: fileToTransform 
       } 
      })); 
    })); 
}); 

applytransform.targets Datei auch die Helix Lager ein:

<Project ToolsVersion="14.0" DefaultTargets="ApplyTransform" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
    <Target Name="ApplyTransform"> 
    <ItemGroup> 
     <Transform Include="$(TransformFile)" /> 

     <ConfigsToTransform Include="$(FileToTransform)" Condition="Exists(@(Transform))"> 
     <TransformPath>%(Transform.Identity)</TransformPath> 
     </ConfigsToTransform> 
    </ItemGroup> 
    <Message Text="@(ConfigsToTransform)"></Message> 
    <Message Text="@(Transform)"></Message> 

    <TransformXml Source="$(WebConfigToTransform)\%(ConfigsToTransform.Identity)" 
       Transform="%(ConfigsToTransform.TransformPath)" 
       Destination="$(WebConfigToTransform)\%(ConfigsToTransform.Identity)" 
       Condition="Exists(@(Transform))"/> 
     </Target> 
    </Project> 

Wenn ich die Aufgabe, die Ausgabe alle sehen normal laufen, aber die resultierende Datei web.config in meiner Website-Wurzel enthält nur das, was in den beiden Dateien umwandeln und ich verliere alle regulären Anwendungskonfigurationseinstellungen ..

Jedermann weiß was los ist?

Antwort

1

Es stellte sich heraus, meine Probleme waren zweifach.

  1. ich nicht eng genug am Sitecore.Foundation.Installer Projekt sah, das ich dachte, war nur verwendet werden Dummy-XDB für die Installation und Daten Berichterstattung aber in der Tat enthält einige der Logik für die Transformation Werkzeuge in es .
  2. Ich hatte einige neue Projekte zu Foundation/Feature-Layern hinzugefügt und es stellt sich heraus, dass standardmäßig eine web.config-Datei, wenn Sie mit der rechten Maustaste -> Eigenschaften anzeigen hat "Build Action" auf "Inhalt" gesetzt wird Die Datei wird in das Ausgabeverzeichnis gestellt, das letztendlich im Web-Stammverzeichnis veröffentlicht wird. Dies sollte auf "None" und "Copy to Output Directory" auf "Do not copy" gesetzt werden.
Verwandte Themen