2017-01-11 5 views
0

Ich habe meine Build auf Visual Studio Team Services eingerichtet, sieht aber so aus, dass die Web.config-Umwandlung meiner Web.Release.config nicht funktioniert und ich nur die Standard-Web.config erhalte. Was ich falsch mache oder welchen Parameter ich vermisse.Web.config Transformation beim Build

enter image description here

+0

Ich habe noch nie mit ihm mit dem TFS gespielt bauen, aber innerhalb von Visual Studio der Transformation nur dann angewandt wird, wenn Sie eine 'Deploy' der Config tun, das erstellt wird Wenn Sie nur ein 'Build' machen, ist das die untransformierte Version. –

+0

es führt einen Befehl wie folgt aus msbuild.exe "myProject.sln"/p: Konfiguration = Release/p: plattform = "Beliebige CPU" /p:VisualStudioVersion="15.0 " – cpiock

+0

Siehe diese Frage und antworte http: // stackoverflow. com/questions/13920146/using-msbuild-exe-zu-veröffentlichen-ein-asp-net-mvc-4-projekt-mit-der-cmd-line –

Antwort

0

Das Profil will Arbeit für mich auf dem Build-Server. Ich habe diese Lösung gefunden, die für mich funktioniert.

/p:outdir=$(build.artifactstagingdirectory)\Release /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false 

Dieser Teil macht den Unterschied:

/p:UseWPP_CopyWebApplication=true 
+0

Da Sie das Problem selbst gelöst haben, können Sie es als Antwort markieren. –

3

Für die Transformation msbuild geschehen muss, um die Lösung "einsetzen". Ich bin nicht sicher, ob der richtigste Weg, es zu tun, aber eine einfache Abhilfe würde

/p:DeployOnBuild=true /p:PublishProfile=SomeProfile 

zum MSBuild Argumente Option hinzufügen werden. Sie können dann die Dateien von überall dort abrufen, wo Sie das Veröffentlichungsprofil konfiguriert haben, um sie zu platzieren und während der Bereitstellung zu verwenden.

Hier ist ein sehr einfaches Beispiel für eine SomeProfile.pubxml Datei, die die veröffentlichten Dateien in das Artefakt-Staging-Verzeichnis stellen würde.

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
This file is used by the publish/package process of your Web project. You can customize the behavior of this process 
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>FileSystem</WebPublishMethod> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish /> 
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <publishUrl>$(BUILD_ARTIFACTSTAGINGDIRECTORY)\Release</publishUrl> 
    <DeleteExistingFiles>False</DeleteExistingFiles> 
    </PropertyGroup> 
</Project> 

Verwenden der MSBuild Befehl args in TFS

/p:DeployOnBuild=true /p:PublishProfile=SomeProfile 

die /p:outDir abfällt.

+0

hmm auf meinem build server ich brauche kein publishprofile weil die Kopieren Sie auf den Azure-Server die Freigabeverwaltung von Visual Studio Teamdienst – cpiock

+0

Vielleicht erstellen Sie ein Profil, das die transformierten Dateien in '$ (BuildArtifactStagingDirectory) \ Release' ablegt und das'/p: outDir' in Ihrem Build-Schritt loswird. Profile sind nur MSBuild-Skripts selbst und sollten in der Lage sein, die globalen Variablen zu verwenden. –

+0

ok. lokal, indem man einen festen Weg einstellt, funktioniert es. Wie kann ich das $ (BuildArtifactStagingDirectory) in der Profilkonfiguration setzen? – cpiock

Verwandte Themen