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?
Pour Visual Studio 2012, cette solution ne fonctionnera pas. Vous devriez regarder la réponse de michielvoo juste après celle-ci.
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.
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.
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.
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.
Seul un chemin normal avec des barres obliques marche dans Visual Studio 2012:
../../../../../app
Cela commence au répertoire racine du projet publié.
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 ".