Question

Je suis en train de reproduire la fonctionnalité exacte de ce dialogue dans Visual Studio 2008 dans un script de construction: text alt

Ceci est un Web ASP.NET site , pas une application web .

Je l'ai googlé autour de cela et tourné un peu de choses impliquant MSBuild, mais tout cela semble concerner des solutions définies comme des applications Web ASP.NET:

http: / /www.driebier.net/post/Using-MSBuild-to-deploy-visual-studio-2005-web-applications.aspx http://blog.donnfelker.com/post/ TFS-Build-Pas-édition-Web-Applications.aspx

Cet article semble être pertinent pour sites Web ASP.NET, mais je trouve que je reçois une erreur en essayant de construire en utilisant ces suggestions:

C:\dev\T&A>msbuild /t:_CopyWebApplication /property:OutDir=c:\temp\taweb\ /prope
rty:WebProjectOutputDir=c:\temp\taweb\

Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework, Version 2.0.50727.3074]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 22/04/2009 11:50:42.
Project "C:\dev\T&A\TAWeb.sln" on node 0 (_CopyWebApplication target(s)).
  Building solution configuration "Debug|.NET".
C:\dev\T&A\TAWeb.sln : error MSB4057: The target "_CopyWebApplication" does not
 exist in the project.
Done Building Project "C:\dev\T&A\TAWeb.sln" (_CopyWebApplication target(s)) --
 FAILED.


Build FAILED.

"C:\dev\T&A\TAWeb.sln" (_CopyWebApplication target) (1) ->
  C:\dev\T&A\TAWeb.sln : error MSB4057: The target "_CopyWebApplication" does n
ot exist in the project.

0 Warning(s)

1 Error(s)

Time Elapsed 00:00:00.06

La solution que je suis en train de publier (hérité, pas mon propre) ne dispose pas .csproj fichiers (où je pouvais importer la cible de _CopyWebApplication de C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v9 0,0 \ webapplications \ Microsoft.WebApplication.targets)

Peut-être est une différence Visual Studio 2005/2008?

Quoi qu'il en soit, je sens que je vais sur le mauvais chemin là.

Essentiellement, je dois juste obtenir exactement ce que le dialogue ci-dessus fait, mais à partir de la ligne de commande.

Merci beaucoup

Était-ce utile?

La solution

La commande suivante fait double emploi avec Publier le site Web de dialogue avec les paramètres par défaut.

Commande pour publication du site Web avec les paramètres par défaut

aspnet_compiler -nologo -v / -p "C:\WebSite1" -u "C:\TargetPath"

Référence

1) Voir Contenu de la communauté intitulé Vous voulez publier un site, mais vous n'avez pas Visual Studio puis ... http://msdn.microsoft.com/en-us/library/20yh9f1b (classique) .aspx .

  • Microsoft Visual Studio 2005> Visual Studio 2005 Invite de commandes
  • Microsoft Visual Studio 2008> Visual Studio 2008 Invite de commandes
  • v2.0 Microsoft .NET Framework SDK> Invite de commandes SDK

2) Voir "ASP.NET Compilation Tool (Aspnet_compiler.exe)" http://msdn.microsoft.com/en-us/library/ms229863.aspx .

3) Après extrait de Walkthrough: Déploiement d'une application Web ASP.NET à l'aide XCOPY http://msdn.microsoft.com/en-us/library/f735abw9.aspx

  

Comme une alternative à l'utilisation de la XCOPY   outil de ligne de commande, qui est supportée   par toutes les versions du .NET Framework,   vous pouvez utiliser le nouveau .NET Framework 2.0   outil situé à   % SystemRoot% \ Microsoft.NET \ Framework \ Version   2 ou version ultérieure \ Aspnet_compiler.exe à   compiler et déployer votre Web   application. Pour plus d'informations, consultez ASP.NET Compilation Tool (Aspnet_compiler.exe) .

4) Après extrait de Comment: PreCompile sites Web ASP.NET pour le déploiement http://msdn.microsoft.com/en-us/library/ms227976.aspx .

  

Si votre site Web est pas Internet   Services d'information application (IIS)   et n'a donc pas entrée dans IIS   métabase, utilisé pour la valeur suivante   le commutateur -v.

     

aspnet_compiler -p physicalOrRelativePath -v / targetPath

     

Dans ce cas, la   paramètre physicalOrRelativePath   fait référence à la qualifié   chemin du répertoire dans lequel le site Web   les fichiers sont situés, ou un chemin relatif   dans le répertoire courant. La période   (.) L'opérateur est autorisé dans la   paramètre physicalOrRelativePath. le   commutateur -v spécifie une racine que le compilateur utilisera pour résoudre   références-racine de l'application (pour   par exemple, avec l'opérateur tilde (~)).   Lorsque vous spécifiez la valeur de / pour   -v changer le compilateur   résoudre les chemins en utilisant la physique   chemin de la racine.

Autres conseils

« magique » combinaison fait ce que vous cherchez. ) Il n'a fallu que deux jours pour obtenir la bonne combinaison pour mon projet.) La clé est d'inclure la cible de _CopyWebApplication et la cible de ResolveReferences.

msbuild "/t:_CopyWebApplication;ResolveReferences;publish" /p:OutDir="C:\inetpub\wwwroot\[appname]\bin\" /p:WebProjectOutputDir="C:\inetpub\wwwroot\[appname]" c:\directory\[appname].csproj    

Ajoutez à votre fichier .csproj:

<Target Name="AfterBuild">
<Message Text="Copying to Deployment Dir:" />
<Copy SourceFiles="@(Content)" DestinationFolder="..\PreCompiledWeb\%(Content.RelativeDir)" />
<CreateItem Include="$(OutputPath)\*">
    <Output TaskParameter="Include" ItemName="Binaries"/>
</CreateItem>
<Copy SourceFiles="@(Binaries)" DestinationFolder="..\PreCompiledWeb\bin" />

Modifier « .. \ PreCompiledWeb » pour le dossier que vous souhaitez publier ou vous pouvez spécifier une chose de variable comme: $ (OutputFolder) que vous pouvez passer

puis allez dans le dossier de votre application web et faire:

msbuild /t:Build

Ensuite, vous pouvez copier ces fichiers où que vous voulez xcopy:

xcopy "..\PreCompiledWeb\*.*" "C:\MySite\" /e

Cela devrait le faire.

Personnellement, j'utilise buildbot qui exécute des commandes pour moi, je devais créer un script VBS qui effectue le téléchargement pour moi.

WinSCP pour faire le travail ftp et puis juste scénarisé le téléchargement:

Set WshShell = CreateObject("WScript.Shell")
sCmd1 = """C:\Program Files\WinSCP\winscp.com"" <myusername> /command ""option batch on"" ""option confirm off"" ""put " & DefaultPath & strResult & "\" & DefaultFileName & " /Usr/<myuser>/" & updateType & "/" & strResult & "/"" ""exit"""

Pour précompiler le site à partir d'une ligne de commande que je fais ce qui suit, mais je le fais sur le serveur Web plutôt que avant de le télécharger:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_compiler -p "D:\<mycompany>\Backedup\Web Sites\<mysite\Root" -v /

J'utilise msbuild exactement ce que vous décrivez. Avez-vous essayé de placer la propriété comme celui-ci?

 /property:"OutDir=c:\temp\taweb\;WebProjectOutputDir=c:\temp\taweb\"

Si cela ne fonctionne toujours pas, laissez-moi savoir et je peux vous envoyer mon dossier de chauve-souris, que des coups de pied du script msbuild, qui fait le svn obtenir, construit le fichier assembly.info, déployer le site web, et enfin court un http get sur le site page d'accueil, juste pour vous assurer qu'il a construit et déployé correctement.

it helps Rihan

Je luttais avec la même erreur (MSB4057: La cible « _CopyWebApplication » n'existe pas dans le projet

.

Oui. Je travaillais avec un projet d'application Web (pas un site Web).

Je suis déconcerté parce que j'avais un projet qui a travaillé, et qui ne l'a pas. Alors je me suis assis avec ExamDiffPro et est allé travailler à comparer les fichiers du projet. Ce que je trouve est la partie de la cible de construction comprend au fond des fichiers de projet étaient différents.

Un projet (qui travaillait) a été créée en utilisant une nouvelle version de Visual Studio. L'autre (qui ne fonctionnait pas) a été créé il y a quelques années et a été mis à jour au fil des ans, à la version actuelle, je travaille avec. Le projet mis à jour, évidemment n'a pas mis à jour avec les obtenir de nouvelles cibles de construction que les nouvelles versions de Visual Studio est devenu disponible.

Au bas du fichier de projet qui fonctionnait, je trouve ce qui suit:

  

<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />

     

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v8.0\WebApplications\Microsoft.WebApplication.targets" />

La deuxième ligne d'importation était pas dans le projet qui a été à l'origine des problèmes.

J'ai simplement copié l'importation à partir du fichier de travail, et collé dans l'emplacement relatif dans le fichier non-travail et l'alto!

Bien que ce n'est pas une solution directe au problème initial défini dans ce fil, j'espère que cela aide quelques-uns des autres personnes qui ont trébuché sur ce fil, à la recherche de problèmes similaires, uniquement avec des projets d'application Web réelle.

Voici un petit script PowerShell qui construit une solution, puis publie un projet web de celui-ci.

Le MSBuild est pour .Net 3.5, donc à changer "\ v4.0 \" si nécessaire.

$build = "$env:windir\Microsoft.NET\Framework\v3.5\MSBuild.exe"

$SolutionPath = "C:\Projects\AdminWebSite"
$SolutionFile = "AdminWebSite.sln"
$WebProjectFile = "Admin.Web\Admin.Web.csproj"
$OutputPath = "C:\PublishedSites\Hosts\adminweb"

& $build "$SolutionPath\$SolutionFile" /t:rebuild
& $build "$SolutionPath\$WebProjectFile" "/t:ResolveReferences;_CopyWebApplication;publish" /p:OutDir="$OutputPath\bin\" /p:WebProjectOutputDir="$OutputPath"

Les "ResolveReferences" doit venir avant "_CopyWebApplication" sinon les dépendances disparaissent.

Les chemins donnés ici par exemple à construire:

  • C: \ projet \ AdminWebSite \ AdminWebSite.sln
  • C: \ projet \ AdminWebSite \ Admin.Web \ Admin.Web.csproj

L'erreur que vous avez reçu (C: \ dev \ T & A \ TAWeb.sln: erreur MSB4057: La cible "_CopyWebApplication" n'existe pas dans le projet) est dû à deux problèmes. Tout d'abord: la _CopyWebApplication cible doit être appelée sur un fichier de projet WebApplication, pas une solution. Deuxièmement:. Un site Web ne dispose pas d'un fichier de projet, webapplications ont des fichiers de projet

L'objectif de _CopyWebApplication applique uniquement à la publication d'un projet WebApplication. Utilisez la tâche AspNetCompiler MSBuild doit être utilisé pour publier un site Web.

Lorsque vous publiez un site en studio visuel 2008, la deuxième ligne de sortie est « Site Web pré-compilation ». Les options affiche studio visuels pour la publication d'une carte de site Web directement aux options pour le et href="http://msdn.microsoft.com/en-us/library/ms229863%28VS.80%29.aspx" rel="nofollow"> Aspnet_compiler.exe .

Bien que je ne suis pas le premier ici pour dire « utiliser AspNet_compiler », je pensais décrire les raisons pour lesquelles il peut être utile. Sur une note de côté, je pense que le AspNet_compiler peut être utilisé pour publier un webapp mais je dois faire un peu plus de tests.

J'utilise le fichier de chauve-souris en utilisant msbuild.exe (.NET 3.5, vs 2008) pour "publier" mon site (vbproj) dans un dossier.

  

% msBuildDir% \ msbuild   "D: \ Project1 \ Client \ WebPresentation \ ConsultaOperaciones.vbproj"   / t: ResolveReferences; Reconstruire   / P: BuildingProject = true; OutDir = D: \ Instalaciones \ ultima \ PublicacionWeb \ OutDir \; WebProjectOutputDir = D: \ Instalaciones \ ultima \ PublicacionWeb \ WebProjectDir \

Il n'y a rien de magique la fonctionnalité « Publier ... » que vous ne pouvez recréer vous-même, d'autant plus que vous ciblez un partage de fichiers réseau.

il est noyau, tout ce qu'il est fait est la copie de vos fichiers d'un endroit à l'autre. En utilisant NAnt, vous pouvez retirer ceci avec un de rel="nofollow copie de tâche ou vous pouvez utiliser une tâche de exec appeler xcopy Si vous utilisez un outil de construction autre que NAnt, je suis sûr il y a un soutien pour des tâches similaires.

Si vous voulez laisser votre code brut et des informations de débogage derrière, vous pouvez exclure les fichiers qui se terminent par .cs ou pdb. Les deux copies NAnt et xcopy fournissent des moyens faciles de le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top