MsBuild Deploy с правами на удаление файла PackageLocation - PullRequest
4 голосов
/ 24 февраля 2012

У меня есть сборка MsBuild в TFS, которая публикует пакет zip.Это командная строка, которую я использую:

/t:Build;Package 
/p:DeployOnBuild=true;Configuration=Release;
DeployTarget=Package;PackageLocation=\\xxx\MyApp.zip

Она работает правильно и также заменяет в файле web.config параметры, как и ожидалось.Единственная проблема, с которой я сталкиваюсь - это разрешения, применяемые к файлу пакета.Прямо сейчас файл развернут в: * \ myshare \ myapp \ * И папка установлена ​​с разрешением: Все: полный контроль Пакет внутри папки имеет разрешение: TFSAdmin: полный контроль и ничего больше, поэтому я не могу открыть или скопировать его ... Есть ли способ избежать этого?

Ответы [ 3 ]

0 голосов
/ 02 марта 2013

Добавить в MSBuild .proj файл:

<Exec Command="icacls "\\xxx\MyApp.zip" /grant User:F" ContinueOnError="true" />

последовательность простых прав: F - полный доступ M - изменить доступ RX - чтение и выполнение доступа R - доступ только для чтения W - доступ только для записи

0 голосов
/ 30 января 2018

Если вы хотите сделать папку доступной для вашего веб-сайта, вы можете поместить следующий фрагмент в ваши события "PostBuild" в самом низу вашего .csproj (вам нужно отредактировать файл .csproj вручную через текстовый редактор) :

<Target Name="AfterBuild">
  <!-- grant everyone the modify right recursively even for files and folders created dynamically in the future -->
  <!-- note the use of (OI) and (CI) flags which stand for object inherit & container inherit    these flags      -->
  <!-- indicate that subordinate containers will inherit the same access control element or ace   this means that -->
  <!-- files and folders created in the future within the targeted folder will get the same permissions            -->

  <Exec Command="  icacls   &quot;.\Logs&quot;              /grant      Users:(CI)(OI)M  /T  "  ContinueOnError="true" />σ
  <Exec Command="  icacls   &quot;.\Logs&quot;              /grant  IIS_IUSRS:(CI)(OI)M  /T  "  ContinueOnError="true" />

</Target>

Sidenote: Если вы используете функцию публикации / развертывания на удаленном сервере Visual Studio для развертывания вашего веб-сайта, то само собой разумеется, что разрешения для папок, вероятно, НЕ будут сохранены и что вам придется использовать какое-то сценарий после установки, чтобы повторно применить их (вероятно, с использованием подхода 'icacls', снова показанного здесь). Этот вид сценария после установки, вероятно, должен быть частью WebDeploy - хотя я сам не использовал WebDeploy, поэтому ваш пробег может варьироваться в зависимости от этого конкретного аспекта.

0 голосов
/ 24 февраля 2012

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

ICACLS \\xxx\MyPackage.zip /GRANT Everyone:F
ICACLS \\xxx\MyPackage.zip /GRANT Users:F
...