2016-04-25 13 views
0

VS Publish funktioniert, aber nicht MSBuild.Web.config Transforms

Ich bin kein Experte in MSBuild, aber ich werde den Prozess durchlaufen.

dieser Website Folgen,

https://msdn.microsoft.com/en-us/vs2010trainingcourse_webdevelopment_topic4.aspx

, ich habe ging durch die Schritte 1-4. Wenn ich "Veröffentlichen" in VS 2015 ausführe, wählte ich "Dateisystem" für die Methode, und die Datei web.config wurde basierend auf der "Konfiguration" geändert geändert, kein Problem.

Wenn jedoch MSBuild ausgeführt wird,

C:\Program Files (x86)\MSBuild\14.0\Bin>msbuild.exe "C:\pathToProject\project.sln" /p:Configuration=XXXX /p:OutputPath="C:\pathToOutputFolder" 

hat nicht funktioniert. Die web.config hat NICHT ändern.

Fehle ich noch etwas anderes?

Antwort

0

Es gibt eine MSBuild-Task mit der Bezeichnung TransformXml, bei der das Menüelement Publish ausgeführt wird, aber nicht über die Befehlszeile ausgeführt wird. Es ist nicht Teil einer Projektdatei und Sie müssen es manuell ausführen.

Ich habe einen Build-Server, der eine benutzerdefinierte MSBuild Skript ausgeführt wird, eine Website zu implementieren, und es führt dazu die Transformation:

<!-- Transform the profile-specific .config file into Web.config, placing result in staging folder --> 
<Target Name="TransformWebConfig" Condition=" '$(WebsiteTransformFile)' != '' "> 
    <Error Condition="!Exists('$(WebsiteTransformFile)')" Text="Web configuration file $(WebsiteTransformFile) not found." /> 
    <Message Text="Transforming Web.config with $(WebsiteTransformFile)" /> 
    <TransformXml Source="Web.config" 
      Transform="$(WebsiteTransformfile)" 
      Destination="Web.transformed.config" /> 
    <Copy SourceFiles="Web.transformed.config" DestinationFiles="Web.config" /> 
    <Delete Files="Web.transformed.config" /> 
</Target> 

Das Anwesen $(WebsiteTransformFile) ist mein Eigentum, die an anderer Stelle in der Datei, dass entspricht der Konfigurationsdatei, z. B. Web.release.config.

Sie können dies zu Ihrer .csproj-Datei hinzufügen oder in eine separate Datei einfügen und manuell ausführen. Es empfiehlt sich, dies manuell zu tun. Wenn Sie F5 drücken, um lokal zu starten, verwenden Sie die nicht transformierte web.config und nicht die transformierte Version, die Sie auf einem Server bereitstellen müssen.

Verwandte Themen