2014-04-08 3 views
7

Ich habe ein Webprojekt, das ich von der Befehlszeile aus veröffentliche, die ein paar zusätzliche Aufgaben ausführt (schließt einige Dateien und Ordner aus, grunt, veröffentlicht einen anderen) Projekt der Reihe nach).MSBuild veröffentlichen Webprojekt von der Befehlszeile tut Paket anstelle von FileSystem

Ein zwei Maschinen (A und B), funktioniert es mit der rechten Maustaste> Veröffentlichen ... in Visual Studio, und wählen Sie das richtige Veröffentlichungsprofil.

Historisch gesehen, auf beiden Maschinen, es hat auch mit der folgenden Befehlszeile gearbeitet:

msbuild MyProject.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=myProfile /v:n 

aber jetzt, Maschine B nicht korrekt veröffentlicht.

Das Veröffentlichungsprofil ist mit <WebPublishMethod>FileSystem</WebPublishMethod an der Spitze konfiguriert, aber aus den Protokollen versucht es Package veröffentlichen stattdessen, ohne ersichtlichen Grund.

Hier ist das vollständige Profil veröffentlichen:

<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>True</LaunchSiteAfterPublish> 
     <ExcludeApp_Data>False</ExcludeApp_Data> 
     <publishUrl>..\Production</publishUrl> 
     <DeleteExistingFiles>False</DeleteExistingFiles> 
     <ExcludeFoldersFromDeployment>Content;Scripts;Pages</ExcludeFoldersFromDeployment> 
     <ExcludeFilesFromDeployment>index-dev.html;index.html;debug.html;JSLintNet.json;Gruntfile.js;package.json;packages.config;publishall.bat;publishapi.bat</ExcludeFilesFromDeployment> 
     <BuildDependsOn> 
      $(BuildDependsOn); 
      RunGrunt; 
      PublishApi; 
     </BuildDependsOn> 
    </PropertyGroup> 
    <Target Name="RunGrunt"> 
     <Message Text="Running grunt production..." /> 
     <Exec Command="grunt production" /> 
    </Target> 
    <Target Name="PublishApi"> 
     <Message Text="Publishing API..." /> 
     <Exec Command="publishapi" /> 
    </Target> 
</Project> 

Wie zu erwarten ist, weil es nur ein Package tun, keine Dateien immer im publishUrl Verzeichnis erscheinen. Auch hier funktioniert das Veröffentlichungsprofil von VS2013 mit Rechtsklick-Veröffentlichung.

Im Protokoll auf Maschine A bekomme ich diesen Auszug:

**ValidatePublishProfileSettings**: 
    Validating PublishProfile(myProfile) settings. 

Aber in Maschine B scheint es nicht.

später im Protokoll auf Maschine A enthält:

**WebFileSystemPublish**: 
    Creating directory "..\Production". 
    Copying obj\Release\Package\PackageTmp\cache.manifest to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\cache.manifest. 
    Copying obj\Release\Package\PackageTmp\Global.asax to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Global.asax. 
    Copying obj\Release\Package\PackageTmp\Web.config to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Web.config. 
    Copying obj\Release\Package\PackageTmp\bin\MyProject.dll to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Blithe.Web.Collect.dll. 

aber später im Protokoll auf Maschine B, anstelle der oben, es enthält:

**Package**: 
    Invoking Web Deploy to generate the package with the following settings: 
    $(LocalIisVersion) is 7 
    $(DestinationIisVersion) is 7 
    $(UseIis) is True 
    $(IisUrl) is <<<some url>>> 
    $(IncludeIisSettings) is False 
    $(_DeploymentUseIis) is False 
    $(DestinationUseIis) is False 

Der einzige Unterschied, den ich Ich kann mir zwischen den beiden Rechnern vorstellen, dass ich ein Update auf dem Rechner B (dem Problem Rechner) für 'Windows Azure SDK für .NET (VS2013) - 2.3' installiert habe. Irgendwelche Ideen wie und warum das könnte es gebrochen haben?

Ich habe versucht, /p:PublishProfileRootFolder="Properties\PublishProfiles" wie erwähnt here hinzuzufügen, aber das hat nicht funktioniert.

Antwort

14

Hinzufügen:

/p:VisualStudioVersion=12.0

auf den Befehl gearbeitet.

Maschine B hatte Visual Studio 2008 ebenfalls installiert, während Maschine A nicht installiert war. Einstellen der Version auf 12.0 oder sogar 11.0 funktioniert. Wenn Sie es auf 10.0 setzen, wird das Veröffentlichungsprofil ignoriert und nur ein Paket installiert.

Überraschenderweise scheint es standardmäßig 10.0 zu sein.

Dieses Problem trat erst durch das Update auf Azure SDK 2.3 auf, das einige Änderungen an Web Publish hatte, so dass dies möglicherweise zu diesem Problem geführt hat.

Verwandte Themen