2016-09-30 5 views
0

Löschen ich folgende Nant Skript haben, die die Build tut und bereitstellen:Visual Studio-deploy DLLs während des Lösens veröffentlichen

<msbuild project=".\Code\Code.sln" target="Build"> 
    <property name="Configuration" value="${Build.Configuration}" /> 
    <property name="Platform" value="${build.platform}" /> 
    <property name="CreatePackageOnPublish" value="true" /> 
    <property name="DeployOnBuild" value="true" /> 
    <property name="DeployIISAppPath" value="Default Web Site\${Web.Path}" /> 
</msbuild> 

<exec program=".\Code\CodeWeb\obj\${Build.Configuration}\Package\CodeWeb.deploy.cmd" commandline="/y /m:webhost.mycompany.com /u:DOMAIN\user /p:password"/> 

Mein Problem ist folgendes: wenn ich in Debug oder RC bereitstellen Konfigurationen bauen, alles funktioniert gut. Alle Dateien sind im Veröffentlichungsverzeichnis vorhanden und der Code wird aktualisiert. Wenn ich jedoch in der Release-Konfiguration bereitstellen möchte, löscht der Veröffentlichungsprozess drei .dlls, die ich für die Funktion meiner Site benötige.

Derselbe Code wird für alle Build-Konfigurationen erstellt und veröffentlicht, daher glaube ich nicht, dass dies das Problem sein könnte. Ich weiß auch nicht, ob irgendwelche meiner Veröffentlichungsprofile die Quelle des Problems sind, aber wenn sie sind, sind die einzigen nennenswerten Unterschiede, dass Production.pubxml.user ein <ItemGroup> Element mit einer ganzen Reihe von <File> untergeordneten Elementen enthält Dateien, in denen Development.pubxml.user nichts davon enthält. Ich habe jedoch die <ItemGroup> von Production.pubxml.user in Development.pubxml.user kopiert und den Entwicklungsveröffentlichungsprozess nicht unterbrochen.

Mein msdeploy.exe Protokoll beginnt, wie dies für die Produktion veröffentlicht Im dev

SetParameters from: 
"C:\Shared\Code\CodeWeb\obj\Release\Package\CodeWeb.SetParameters.xml" 
You can change IIS Application Name, Physical path, connectionString 
or other deploy parameters in the above file. 
------------------------------------------------------- 
Start executing msdeploy.exe 
------------------------------------------------------- 
"C:\Program Files\IIS\Microsoft Web Deploy V3\msdeploy.exe" -source:package='C:\Shared\Code\CodeWeb\obj\Release\Package\CodeWeb.zip' -dest:auto,computerName="webhost.mycompany.com",userName="DOMAIN\user",password="password",includeAcls="False" -verb:sync -disableLink:AppPoolExtension -disableLink:ContentExtension -disableLink:CertificateExtension -setParamFile:"C:\Shared\Code\CodeWeb\obj\Release\Package\CodeWeb.SetParameters.xml" 
Info: Using ID '52641dbe-b1e5-4ff5-9962-01386a7fe513' for connections to the remote server. 
Info: Deleting file (Default Web Site\CodeStaging\bin\System.Net.Http.Formatting.dll). 
Info: Deleting file (Default Web Site\CodeStaging\bin\System.Web.Http.dll). 
Info: Deleting file (Default Web Site\CodeStaging\bin\System.Web.Http.WebHost.dll). 

veröffentlichen, es funktioniert einfach nicht, diese Dateien zu löschen. Ich habe die .deploy.cmd-Dateien, die msbuild erstellt, sowie die Vergleiche auf Ordnerebene für die .zip-Pakete, die die .deploy.cmd-Dateien bereitstellen, erstellt, aber ich finde keine Unterschiede, über die es sich zu sprechen lohnt.

Bei weiteren Untersuchungen werden die Dateien nur gelöscht, wenn ich das Msdeploy-Paket von meinem Produktionscomputer erstellen. Wenn ich trunk/auf meinen Produktions- und Dev-Maschinen auschecke und den Build- und Deploy-Code unten ausführe, funktioniert die Bereitstellung in jeder Umgebung vom Dev-Rechner ordnungsgemäß und die Bereitstellung in jeder Umgebung vom Produktionsrechner löscht meine benötigten Assemblys. Gibt es irgendwo globale Einstellungen für msdeploy, die durcheinander geraten sind? Wenn Sie diese Frage beantworten können, werfen Sie einen Blick auf meine other, similar one.

Kann mir jemand erklären, warum derselbe Code meine Bereitstellung bei der Ausführung von meiner Produktionsmaschine unterbricht, aber funktioniert, wenn er von meiner Entwicklungsmaschine ausgeführt wird, unabhängig von der Umgebung, in der ich die Bereitstellung ausführe?

Antwort

0

Ich bin nicht ganz sicher, warum dies als die fehlenden Baugruppen gearbeitet sind nicht im GAC auf der Maschine versagt aber

<Private>True</Private> 

unter jedem des Verweises auf diese fehlenden Baugruppen in meiner CSPROJ Datei hinzufügen hat behoben. Referenzen sehen nun wie folgt aus:

<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <Private>True</Private> 
    <HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll</HintPath> 
</Reference> 

mit freundlicher Genehmigung von http://bronumski.blogspot.com/2009/06/project-reference-fun-and-games.html

0

dieser Teil Ihrer Veröffentlichungseinstellungen ist,

Wenn Sie zu bauen gehen | Veröffentlichen {Projektname}

Dies wird ein Dialogfenster öffnen

zu Einstellungen und Dateioptionen veröffentlichen und Sie werden eine Option Löschen Sie alle vorhandenen Dateien vor dem veröffentlichen sehen. Deaktivieren Sie dies, wenn Sie nicht möchten, dass Ihre Dateien beim Deployment gelöscht werden.

+0

Dies obwohl seltsam ist. Verwende ich diese Veröffentlichungsprofile eigentlich, seit ich das Bereitstellungsskript mit Msbuild erstellt habe?Außerdem hat mein Produktionsprofil "Zusätzliche Dateien am Ziel entfernen" aktiviert, aber auch mein Entwicklungsprogramm, das funktioniert. – sirdank

Verwandte Themen