Могу ли я сохранить права доступа к папкам во время веб-публикации одним кликом?

Отказ от ответственности. Я знаю, что могу сохранить права на доступ к папкам, если я установил флажок "Оставить дополнительные файлы по назначению", но я не хочу этого делать.

Тем не менее, есть ли способ публикации веб-публикации одним кликом в Visual Studio 2010 сохранить разрешения на папку на удаленном сервере?

В частности, я хочу, чтобы учетная запись пула приложений имела разрешения на изменение в папке App_Data, но разрешения всегда получают reset во время процесса публикации.

Ответ 1

По умолчанию мы вызываем поставщика Web Deploy SetAcl в папке App_Data, это поведение контролируется свойством MSBuild, IncludeSetAclProviderOnDestination. Значение по умолчанию для этого свойства истинно в% ProgramFiles32%\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets. Если вы хотите запретить вызов провайдера SetAcl, вы можете просто установить для этого свойства значение false при публикации. Для этого выполните следующие действия.

  • В том же каталоге, что и ваш проект, создайте файл с именем {ProjectName}.wpp.targets(где {ProjectName} - это имя вашего проекта веб-приложения)
  • Внутри файла вставьте содержимое MSBuild, которое находится ниже этого списка
  • Перезагрузите проект в Visual Studio (VS кэширует файлы проекта в памяти, чтобы этот кеш нужно очистить).

{Имя_проекта}.wpp.targets

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeSetAclProviderOnDestination>false</IncludeSetAclProviderOnDestination>
  </PropertyGroup>    
</Project>

Внутри этого файла вы видите, что я объявляю это свойство и устанавливаю его значение False. После того, как у вас есть этот файл, он будет автоматически подхвачен нашим процессом публикации, как из Visual Studio, так и из любых операций публикации из командной строки.

Можете ли вы попробовать это и сообщить мне, есть ли у вас дополнительные проблемы?