Подтвердить что ты не робот

WebApplication опубликует путь относительной файловой системы

Я создаю публикацию для относительного пути для локального тестирования (особенно преобразования xml config). Каждый разработчик имеет свой собственный путь к проверенному проекту, и я хотел бы настроить публикацию, которая является агностикой машины/среды.

В диалоговом окне публикации не указывается ни на какие переменные или подстановочные знаки, которые разрешены в нем, и не принимает obj\publish или file://./obj/publish

Есть ли способ публикации на пути относительной файловой системы?

4b9b3361

Ответ 1

Изменить

Для Visual Studio 2012 это решение не будет работать. Вы должны посмотреть на ответ michielvoo сразу после этого.

Оригинальный ответ

После попытки и попытки я нашел решение: вы можете использовать относительный путь, установив

file:///./obj/publish

в диалоговом окне Publish WebApp, но вы должны использовать путь, который уже существует и доступен для записи пользователем, которого вы используете. Таким образом, вы можете опубликовать свое веб-приложение в локальной папке или в папке, связанной с дорогой.

Сообщите мне, если это поможет. Это было для меня.

Ответ 2

Для тех, кто использует Visual Studio 2012 и новый файл конфигурации публикации (Properties/PublishProfiles/Local.pubxml), вы можете использовать этот синтаксис в самом файле:

<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>

Помните, что свойство $(MSBuildThisFileDirectory) будет разрешено в каталог Local.pubxml. Оттуда вы должны пройти, чтобы добраться туда, где вам нужно.

Ответ 3

Это работало для меня в Visual Studio 2013:

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

Обратите внимание, что это не публикуется в obj\publish, как захотелось оригинальное плакат, а в другой каталог (несколько папок вверх) в моей системе, как я и хотел. Измените его для obj\publish, если хотите.

Ответ 4

В Visual Studio 2012 работает только обычный путь с косой чертой:

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

Это начинается с исходного корневого каталога проекта.

Ответ 5

VS 2015 принимает что-то вроде

..\..\..\DeployFiles

Он также создаст папку, если она отсутствует, поэтому ваши параметры публикации могут перейти в исходный элемент управления, но вы можете легко игнорировать папку DeployFiles и ее содержимое.

Ответ 6

Для случая, когда дополнительный пост опубликовать шаг необходимо вызвать msdeploy (MSVS 2015, dnx) с относительным путем, другой альтернативой является редактирование файла проекта (а не pubxml, хотя это тоже может работать) и создать переменную, которая преобразование относительного пути в абсолютный путь.

<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>

Затем $(AbsOutDir) можно использовать в другом месте по мере необходимости (например, для msdeploy contentPath). Я не думаю, что он может быть введен в диалоговом окне.

От "how-can-i-get-msbuild-to-evaluation-and-print-the-full-path-when-given-a-relative".