MsDeploySkipRules в wpp.targets не работает с PublishProfiles
Я публикую свой проект MVC с помощью PublishProfile через визуальную студию (через пользовательский интерфейс, щелкните правой кнопкой мыши проект, опубликуйте) и отметьте опцию, чтобы очистить папку назначения. Но я не хочу, чтобы конкретная папка "Загрузки" очищалась
Я потратил бесчисленные часы, пытаясь заставить это работать, я думаю, что у меня точно такой же код, как и человек, который здесь объяснил, но он все равно удаляет папку "Загрузки"
Также в качестве примера, приведенного ниже, у меня есть ExcludeFromPackageFiles "favicon", который работает, если я отменяю удаление папки назначения (просто чтобы показать, что мои цели wpp действительно выполняются).
Ниже мой файл имя_проекта.wpp.targets
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!-- this doesnt work -->
<PropertyGroup>
<AfterAddIisSettingAndFileContentsToSourceManifest>AddCustomSkipRules</AfterAddIisSettingAndFileContentsToSourceManifest>
</PropertyGroup>
<PropertyGroup>
<UseMsDeployExe>true</UseMsDeployExe>
</PropertyGroup>
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipErrorLogFolder1">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>ErrorLog</AbsolutePath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
<!-- this works! -->
<ItemGroup>
<ExcludeFromPackageFiles Include="favicon.ico">
<FromTarget>ContactManager.Mvc.wpp.targets</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
</Project>
Есть идеи?
1 ответ
(1) AbsolutePath
значение в вашем примере скопировано / вставлено из моего примера правила пропуска. Вам нужно изменить это значение на путь вашего Downloads
папка.
<Target Name="AddCustomSkipRules">
<Message Text="Adding Custom Skip Rules" />
<ItemGroup>
<MsDeploySkipRules Include="SkipDownloadsFolder">
<SkipAction>Delete</SkipAction>
<ObjectName>filePath</ObjectName>
<AbsolutePath>Downloads</AbsolutePath>
</MsDeploySkipRules>
</ItemGroup>
</Target>
(2) Вы не можете использовать пользовательское правило пропуска при публикации из Visual Studio. Вы должны опубликовать с помощью MSBuild из командной строки. Суть моего вопроса заключалась в том, чтобы объединить удобство профиля публикации, управляемого в VS, с утилитой настраиваемого правила пропуска (для которого требуется командная строка), потому что в VS 2012, обновление 3, ограничение командной строки не имеет был отменен
Моя команда MSBuild выглядит так:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe My.Website.sln /p:Configuration=Release;DeployOnBuild=true;PublishProfile="Test Server - Web Deploy"
Если я пытаюсь опубликовать из VS 2012, я получаю следующую ошибку, хотя "-verb:sync" ясно виден в выходных данных:
2>Start Web Deploy Publish the Application/package to http://my.website.example.com/MSDEPLOYAGENTSERVICE ...
2>C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe
-source:manifest='C:\inetpub\wwwroot\My.Website\obj\Release\Package\My.Website.SourceManifest.xml'
-dest:auto,ComputerName='http://my.website.example.com/MSDEPLOYAGENTSERVICE',UserName='...',Password="...",IncludeAcls='False',AuthType='NTLM'
-verb:sync
-disableLink:AppPoolExtension
-disableLink:ContentExtension
-disableLink:CertificateExtension
-skip:skipaction='Delete',objectname='filePath',absolutepath='ErrorLog'
-skip:objectname='dirPath',absolutepath='obj\\Release\\Package\\PackageTmp\\App_Data$'
-skip:objectname='dirPath',absolutepath='MyWebsite/\\App_Data$'
-setParamFile:"C:\inetpub\wwwroot\My.Website\obj\Release\Package\My.Website.Publish.Parameters.xml"
-retryAttempts=2
2>MSDEPLOY(0,0): Error : The verb must be specified by using the -verb argument.
2>MSDEPLOY(0,0): Error count: 1.