VS2010 Web Publier version en ligne de commande de Deploy File System
-
26-09-2019 - |
Question
Folks,
En un mot, je veux reproduire cette boîte de dialogue:
Il est un projet Visual Studio 2010 ASP.Net MVC. Si j'exécuter cette commande, je reçois tous les fichiers que je veux, y compris les web.configs transformées dans le « C: \ toDeploy ». Répertoire
Je veux reproduire cela sur la ligne de commande pour que je puisse l'utiliser pour un environnement d'assurance qualité construction.
Je l'ai vu plusieurs articles sur la façon de le faire sur la ligne de commande pour Déploie à distance, mais je veux juste le faire pour Déploie du système de fichiers.
Je sais que je pourrais reproduire cette fonctionnalité à l'aide des tâches ou des scripts NANT râteau, mais je veux le faire en utilisant ce mécanisme, donc je ne suis pas me répéter.
Je l'ai étudié ce un peu plus, et je l'ai trouvé ces liens, mais aucun d'entre eux résous proprement:
- VS la version 2008, mais pas Web.Config transforme
- Crée package, mais ne déploie pas ..do Je dois utiliser MSDeploy sur ce paquet
- package Déploie après l'avoir créé ci-dessus ... ne l'interface utilisateur vraiment faire ce tango 2 pas?
Merci à l'avance!
La solution
Ok, enfin compris cela.
La ligne de commande dont vous avez besoin est:
msbuild path/to/your/webdirectory/YourWeb.csproj /p:Configuration=Debug;DeployOnBuild=True;PackageAsSingleFile=False
Vous pouvez modifier où les résultats du projet par l'ajout d'une propriété de outdir=c:\wherever\
dans le répertoire / p. Section
Cela va créer la sortie à:
path/to/your/webdirectory/obj/Debug/Package/PackageTmp/
Vous pouvez ensuite copier ces fichiers dans le répertoire ci-dessus en utilisant la méthode que vous souhaitez.
J'ai tout cela travailler comme une tâche de râteau rubis en utilisant Albacore . Je suis en train de tout faire pour que je puisse réellement mettre comme contribution au projet. Mais si quelqu'un veut le code avant cela, laissez-moi savoir.
Une autre ride que j'ai trouvé qu'il mettait dans les paramètres Tokenizé dans le web.config. Si vous n'avez pas besoin de cette fonctionnalité, assurez-vous d'ajouter:
/p:AutoParameterizationWebConfigConnectionStrings=false
Autres conseils
Je pensais que je posterai une autre solution que j'ai trouvé, je l'ai mis à jour cette solution afin d'inclure un fichier journal.
Ceci est similaire à publier une application Web à partir de la ligne de commande , mais juste nettoyé et ajouté fichier journal. également vérifier la source originale http://www.digitallycreated.net/Blog/59/locally-publishing-a-vs2010-asp.net-web-application-using-msbuild
Créer un MSBuild_publish_site.bat (nommez-tout) à la racine de votre projet d'application Web
set msBuildDir=%WINDIR%\Microsoft.NET\Framework\v4.0.30319
set destPath=C:\Publish\MyWebBasedApp\
:: clear existing publish folder
RD /S /Q "%destPath%"
call %msBuildDir%\msbuild.exe MyWebBasedApp.csproj "/p:Configuration=Debug;PublishDestination=%destPath%;AutoParameterizationWebConfigConnectionStrings=False" /t:PublishToFileSystem /l:FileLogger,Microsoft.Build.Engine;logfile=Manual_MSBuild_Publish_LOG.log
set msBuildDir=
set destPath=
Mise à jour de votre dossier de projet d'application Web MyWebBasedApp.csproj par adjonction xml sous la balise <Import Project=
<Target Name="PublishToFileSystem" DependsOnTargets="PipelinePreDeployCopyAllFilesToOneFolder">
<Error Condition="'$(PublishDestination)'==''" Text="The PublishDestination property must be set to the intended publishing destination." />
<MakeDir Condition="!Exists($(PublishDestination))" Directories="$(PublishDestination)" />
<ItemGroup>
<PublishFiles Include="$(_PackageTempDir)\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(PublishFiles)" DestinationFiles="@(PublishFiles->'$(PublishDestination)\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="True" />
</Target>
cela fonctionne mieux pour moi que d'autres solutions.
Consultez ci-après pour plus d'informations:
2) publier une application Web à partir de la ligne de commande
Ma solution pour CCNET transformation Web.config :
<tasks>
<msbuild>
<executable>C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe</executable>
<workingDirectory>E:\VersionesCC\Trunk_4\SBatz\Gertakariak_Orokorrak\GertakariakMS\Web</workingDirectory>
<projectFile>GertakariakMSWeb2.vbproj</projectFile>
<targets>Build</targets>
<timeout>600</timeout>
<logger>C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MSBuild.dll</logger>
<buildArgs>
/noconsolelogger /p:Configuration=Release /v:diag
/p:DeployOnBuild=true
/p:AutoParameterizationWebConfigConnectionStrings=false
/p:DeployTarget=Package
/p:_PackageTempDir=E:\Aplicaciones\GertakariakMS2\Web
</buildArgs>
</msbuild>
</tasks>
VS2012 et au-dessus, vous pouvez vous référer aux éléments existants publier des profils sur votre projet avec msbuild 12,0, cela équivaudrait à un clic droit et publier ... la sélection d'un profil de publication ( « MyProfile » sur cet exemple):
msbuild C:\myproject\myproject.csproj "/P:DeployOnBuild=True;PublishProfile=MyProfile"
J'ai une solution pour Visual Studio 2012: https://stackoverflow.com/a/15387814/2164198
Cependant, il fonctionne sans Visual Studio installé du tout! (Voir UPDATE ). Je ne l'ai pas vérifié encore si l'on peut obtenir toutes les choses nécessaires à partir de Visual Studio Express 2012 pour l'installation Web.
Un fichier msbuild complet avec l'inspiration de CubanX
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Publish">
<RemoveDir Directories="..\build\Release\Web\"
ContinueOnError="true" />
<MSBuild Projects="TheWebSite.csproj"
Targets="ResolveReferences;_CopyWebApplication"
Properties="Configuration=Release;WebProjectOutputDir=..\build\Release\Web;OutDir=..\build\Release\Web\bin\"
/>
</Target>
<Target
Name="Build"
DependsOnTargets="Publish;">
</Target>
</Project>
Cela place le site publié dans le Web .. \ build \ dossier de presse