Подтвердить что ты не робот

Нант с неудачными разрешениями на сервере сборки

Общий вопрос для новичков. Я пытаюсь запустить Nant script на сервере сборки (очень простой script, ничего не делать), и он не работает с ошибкой

System.Security.SecurityException: запрос на разрешение типа "System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089" не удалось.

Что делать, чтобы запустить его?

4b9b3361

Ответ 1

@TK имеет ответ здесь, я считаю, хотя это может быть не так просто, как работает nent с сетевого диска.

У меня была аналогичная проблема с @Aidan. Оказывается, я скопировал сборки nantcontrib (v.86) в мою систему сборки таким образом, что Windows 7 ограничила доступ к сборкам nantcontrib. Чтобы исправить это, я сначала скопировал zip файл nantcontrib в мою сборную VM, а затем переписал заблокированные сборки с содержимым .zip. Windows 7 увидела, что файлы поступают из локальной системы (а не из любого ненадежного источника, который я скопировал изначально), и он разблокировал сборки.

Вероятно, существует более прямое средство доверия к сборкам (например, ссылка @TK), но это сработало для меня.

Если вы снова видите эту ошибку, найдите две вещи:

Во-первых, Nant (v.91 alpha 2) делает приличную работу, точно сообщая, что такое ошибка. Я видел ту же ошибку, что и @Adian, вместе с полным стеком ошибок и, наконец, эту информацию (выделение мое):

Сбой сборки или AppDomain: NAnt.Contrib.Tasks, Версия = 0.86.3319.0, Культура = нейтральная, PublicKeyToken = null Метод что вызвало сбой: NAnt.Core.Task CreateChildTask (System.Xml.XmlNode)
Зона сборки, которая не удалось: Интернет
Url сборки, которая не удалось: file:///C:/Program Files (x86)/NAntBuilder 2/nantcontrib/бен/NAnt.Contrib.Tasks.dll

Во-вторых, посмотрите страницу свойств злоумышленника (в моем случае Nant.Contrib.Tasks.dll). Если файл был скопирован из ненадежного источника, вы увидите кнопку "Разблокировать" в разделе свойств (ниже Advanced...) вместе с запиской, в которой указано, что файлы были получены из ненадежного источника.

Ответ 2

В моем сообщении об ошибке упоминается "Интернет-зона". Вероятно, это связано с тем, что я загрузил zipped файлы из SourceForge. Я застегнул молнию, а затем расстегнул ее, чтобы снять зону, и это отлично подействовало на меня.

В Windows 7 (или аналогичном):

  • Выберите все файлы в папке NAnt
  • Щелкните правой кнопкой мыши, перейдите в папку > Сжатый (сжатый) файл
  • Щелкните правой кнопкой мыши на новом zip файле и выберите "Извлечь все..."
  • Извлечь в новую папку

Выбранные файлы больше не будут из "Интернет-зоны". Вы можете скопировать обратно в исходный каталог, если хотите.

Ответ 3

Эта проблема вызвана тем, что Windows установила метаданные файлов "Zone.Identifier" в NTFS в "Интернет" (или в другую зону, которую вы должны явно разблокировать, чтобы получить доступ).

Чтобы не создавать метаданные безопасности файлов, которые должны быть записаны при копировании файлов или, в моем случае, разархивировать из zip файла на сетевом диске, либо скопировать zip файл в локальную папку, прежде чем разархивировать его, как было предложено ранее, или запустите инструмент "streams.exe" из Sysinternals, чтобы удалить эти метаданные.

Например, если я запускаю streams.exe на exe в папке "Мои файлы":

streams.exe *.exe

Streams v1.56 - Enumerate alternate NTFS data streams
Copyright (C) 1999-2007 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\Downloads\jre-6u27-windows-x64.exe:
   :Zone.Identifier:$DATA       26

Обычно streams.exe не будет отображать информацию о метаданных, если все файлы были созданы из локальной папки. Если вы видите эти метаданные ":Zone.Identifier:$DATA" (хранящиеся в NTFS как альтернативный поток данных), вы также должны увидеть кнопку "Разблокировать" в диалоговом окне "Свойства файла".

Чтобы разблокировать файлы массовыми, запустите "streams.exe -s -d *.*" из вашей проблемной папки.

Ответ 5

Запускаете ли вы Nant script на общий сетевой диск?

Если это так, вам может потребоваться настроить политику .NET Caspol, чтобы разрешить выполнение .NET-кода на сетевом ресурсе.

Использование CasPol для полного доверия Share

Эта ссылка может помочь вам.

Ответ 6

Когда вы загружаете NAnt, вам нужно щелкнуть правой кнопкой мыши по zip файлу (перед извлечением evertything), затем по свойствам и нажать на разблокировать файл. Затем извлеките все, и он будет работать.