Сбой Nant с неправильными разрешениями на сервере сборки - PullRequest
17 голосов
/ 15 сентября 2010

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

System.Security.SecurityException: Запрос разрешения типа 'System.Security.Permissions.FileIOPermission, mscorlib, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken = b77a5c561934e089 'не удалось.

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

Ответы [ 5 ]

27 голосов
/ 27 января 2012

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

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

  1. Выберите все файлы в папке NAnt
  2. Щелкните правой кнопкой мыши, отправьте в> сжатую (заархивированную) папку
  3. Щелкните правой кнопкой мыши новый zip-файл и выберите «Извлечь все ...»
  4. Извлечь в новую папку

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

16 голосов
/ 08 сентября 2011

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

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

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

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

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

Не удалось выполнить сборку или домен приложения: NAnt.Contrib.Tasks, Version =0.86.3319.0, Culture = нейтральный, PublicKeyToken = null Метод, вызвавший ошибку: NAnt.Core.Task CreateChildTask (System.Xml.XmlNode)
Зона сбоя сборки была: Интернет
URL-адрес сборки, на которой произошла ошибка, был: file: /// C: / Program Files (x86) / NAntBuilder 2 / nantcontrib / bin / NAnt.Contrib.Tasks.dll

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

6 голосов
/ 25 октября 2012

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

Чтобы не вызывать защиту файловметаданные, которые нужно записать при копировании файлов или, в моем случае, при распаковке из zip-файла на сетевом диске, либо скопируйте zip-файл в локальную папку перед разархивированием, как было предложено ранее, либо запустите потоки .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 willnне отображать какую-либо информацию метаданных, если все файлы происходят из локальной папки.Если вы видите эти ":Zone.Identifier:$DATA" метаданные (хранящиеся в NTFS в качестве альтернативного потока данных), вы также должны увидеть кнопку «Разблокировать» в диалоговом окне «Свойства файлов».

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

1 голос
/ 06 ноября 2017

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

0 голосов
/ 04 октября 2010

Запускаете ли вы сценарий Nant на сетевом диске?

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

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

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

...