web-dev-qa-db-fra.com

Publication de l'application Web sur le chemin du système de fichiers relatif

Je configure une publication sur un chemin relatif pour tester localement (en particulier les transformations de configuration XML). Chaque développeur a son propre chemin d'accès au projet extrait et j'aimerais mettre en place une publication indépendante de la machine et de l'environnement.

La boîte de dialogue de publication n'indique aucune variable ou caractère générique qui y est autorisé et n'accepte pas obj\publish ni file://./obj/publish.

Existe-t-il un moyen de publier sur un chemin de système de fichiers relatif?

47
Maslow

Modifier

Pour Visual Studio 2012, cette solution ne fonctionnera pas. Vous devriez regarder la réponse de michielvoo juste après celle-ci.

Réponse originale

Après avoir essayé et essayé, j’ai trouvé la solution: vous pouvez utiliser un chemin relatif en définissant

file:///./obj/publish

dans la boîte de dialogue Publish WebApp, mais vous devez utiliser un chemin déjà existant et accessible en écriture à l'utilisateur que vous utilisez. De cette façon, vous pouvez publier votre application Web dans un dossier local ou dans un dossier associé au chemin.

Faites-moi savoir si cela aide. Ça l'a fait pour moi.

17
marzapower

Pour ceux qui utilisent Visual Studio 2012 et le nouveau fichier de configuration de publication (Properties/PublishProfiles/Local.pubxml), vous pouvez utiliser cette syntaxe dans le fichier lui-même:

<Project ToolsVersion="4.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <SiteUrlToLaunchAfterPublish />
    <publishUrl>$(MSBuildThisFileDirectory)..\..\obj\publish</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

Sachez que la propriété $ (MSBuildThisFileDirectory) sera résolue dans le répertoire Local.pubxml. De là, vous devez traverser pour arriver là où vous devez être.

50

Cela a fonctionné pour moi dans Visual Studio 2013:

file:\\..\..\..\Publish

Veuillez noter que ceci ne publie pas pour obj\publish, comme l'a voulu l'affiche originale, mais dans un autre répertoire (quelques dossiers vers le haut) de mon système, comme je le souhaitais. Modifiez-le pour obj\publish si vous le souhaitez.

5
Dean

VS 2015 accepte quelque chose comme

..\..\..\DeployFiles

Il créera également le dossier s'il est manquant pour que vos paramètres de publication puissent aller dans le contrôle de source, mais vous pouvez facilement ignorer le dossier DeployFiles et son contenu.

3
wingyip

Seul un chemin normal avec des barres obliques marche dans Visual Studio 2012:

../../../../../app

Cela commence au répertoire racine du projet publié.

3
DKroot

Dans le cas où une étape supplémentaire de publication nécessite d'appeler msdeploy (MSVS 2015, dnx) avec un chemin relatif, une autre solution consiste à modifier le fichier de projet (pas le fichier pubxml bien que cela puisse également fonctionner) et à créer une le chemin relatif dans un chemin absolu.

<Target Name="AfterWebPublish" AfterTargets="WebPublish">
     <!-- 
          msdeploy cannot currently handle relative paths for contentPath so first convert it to an absolute path 
     -->    
    <PropertyGroup>
        <AbsOutDir>$([System.IO.Path]::GetFullPath("$(ProjectDir)$(OutDir)"))</AbsOutDir>
    </PropertyGroup>

    <Exec WorkingDirectory="$(ProjectDir)" Command='call "$(DevEnvDir)..\Tools\vsvars32.bat"' />    
    <Exec WorkingDirectory="$(ProjectDir)" Command='"C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy" -verb:sync -source:contentPath="$(AbsOutDir)PublishOutput" -dest:package="$(AbsOutDir)$(MSBuildProjectName).Zip"' />
  </Target>

Ensuite, $(AbsOutDir) peut être utilisé ailleurs si nécessaire (par exemple, pour msdeploy contentPath). Je ne pense pas que cela puisse être entré dans le dialogue.

De " Comment-puis-je-obtenir-msbuild-à-évaluer-et-imprimer-le-chemin-complet-lorsque-donné-un-relatif ".

0
crokusek