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 были внесены некоторые изменения в веб-публикацию, что вполне могло привести к этой проблеме.