MSBuild публикует веб-проект из командной строки делает Package вместо FileSystem

У меня есть веб-проект, который я публикую из командной строки, используя профиль публикации, который выполняет несколько дополнительных задач (исключая некоторые файлы и папки, ворчание, публикация другого проекта по очереди).

Один из двух компьютеров (A и B) работает нормально, если щелкнуть правой кнопкой мыши> Опубликовать... в Visual Studio и выбрать правильный профиль публикации.

Исторически на обеих машинах он также работал со следующей командной строкой:

msbuild MyProject.csproj /p:Configuration=Release /p:DeployOnBuild=true /p:PublishProfile=myProfile  /v:n

Однако сейчас машина B не публикуется правильно.

Профиль публикации настроен с <WebPublishMethod>FileSystem</WebPublishMethod вверху, однако из журналов, он пытается Package вместо этого публиковать тип без видимой причины.

Вот полный профиль публикации:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <publishUrl>..\Production</publishUrl>
        <DeleteExistingFiles>False</DeleteExistingFiles>
        <ExcludeFoldersFromDeployment>Content;Scripts;Pages</ExcludeFoldersFromDeployment>
        <ExcludeFilesFromDeployment>index-dev.html;index.html;debug.html;JSLintNet.json;Gruntfile.js;package.json;packages.config;publishall.bat;publishapi.bat</ExcludeFilesFromDeployment>
        <BuildDependsOn>
            $(BuildDependsOn);
            RunGrunt;
            PublishApi;
        </BuildDependsOn>
    </PropertyGroup>
    <Target Name="RunGrunt">
        <Message Text="Running grunt production..." />
        <Exec Command="grunt production" />
    </Target>
    <Target Name="PublishApi">
        <Message Text="Publishing API..." />
        <Exec Command="publishapi" />
    </Target>
</Project>

Как и следовало ожидать, потому что это просто делает Package в файле нет файлов publishUrl каталог. Опять же, профиль публикации отлично работает с VS2013, используя публикацию правой кнопкой мыши.

В лог на машине A I получаю этот отрывок:

**ValidatePublishProfileSettings**:
  Validating PublishProfile(myProfile) settings.

Но в машине B это не появляется.

Далее в журнале на машине А он содержит:

**WebFileSystemPublish**:
  Creating directory "..\Production".
  Copying obj\Release\Package\PackageTmp\cache.manifest to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\cache.manifest.
  Copying obj\Release\Package\PackageTmp\Global.asax to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Global.asax.
  Copying obj\Release\Package\PackageTmp\Web.config to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Web.config.
  Copying obj\Release\Package\PackageTmp\bin\MyProject.dll to C:\SVN\Trunk\src\Web Sites\MyProject\..\Production\Blithe.Web.Collect.dll.

но позже в журнале на машине B, вместо вышеупомянутого, он содержит:

**Package**:   
  Invoking Web Deploy to generate the package with the following settings:   
  $(LocalIisVersion) is 7  
  $(DestinationIisVersion) is 7   
  $(UseIis) is True   
  $(IisUrl) is <<<some url>>>  
  $(IncludeIisSettings) is False  
  $(_DeploymentUseIis) is False   
  $(DestinationUseIis) is False

Единственное различие между двумя компьютерами, о котором я могу думать, заключается в том, что я установил обновление на компьютере B (проблемный компьютер) для "Windows Azure SDK для.NET (VS2013) - 2.3". Есть идеи, как и почему это могло сломать это?

Я пытался добавить /p:PublishProfileRootFolder="Properties\PublishProfiles" как уже упоминалось, но это не сработало.

1 ответ

Решение

Добавление:

/p:VisualStudioVersion=12.0

чтобы команда работала.

На машине B также была установлена ​​Visual Studio 2008, а на машине A - нет. Установка версии на 12.0 или даже 11.0 работает. Установка 10.0 игнорирует профиль публикации и просто устанавливает пакет.

Удивительно, но кажется, что по умолчанию 10.0.

Эта проблема не возникала до обновления Azure SDK 2.3, в которое DID были внесены некоторые изменения в веб-публикацию, что вполне могло привести к этой проблеме.

Другие вопросы по тегам