Могу ли я сохранить разрешения для папок во время веб-публикации в один клик? - PullRequest
12 голосов
/ 28 июля 2011

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

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

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

1 Ответ

15 голосов
/ 29 июля 2011

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

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

{ProjectName} .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, так и из любых операций публикации из командной строки.

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

...