Как исправить ошибки конфигурации с помощью Nant 0.91?

106

После загрузки Nant 0.91 я получаю довольно загадочные ошибки конфигурации, связанные с настройкой или безопасностью (см. Ниже).

Я пытаюсь просто обновить исполняемые файлы Nant с 0.86 до 0.91.

Как я могу решить указанные ниже проблемы при сборке на компьютере с Windows 7?

log4net: ERROR XmlConfiguratorAttribute: Исключение при получении ConfigurationFileLocation. Должна иметь возможность разрешать ConfigurationFileLocation, если свойства ConfigFile и ConfigFileExtension не заданы. System.Security.SecurityException: запрос разрешения типа «System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b77a5c561934e089» не выполнен. в System.Security.CodeAccessSecurityEngine.Check (требование объекта, StackCrawlMark и stackMark, логическое значение isPermSet) в System.Security.CodeAccessSecurityEngine.Check (ограничение CodeAccessPermission, StackCrawlMark и stackMarket (StackCrawlMark) в System.AccessMarket (System.Security). String dir, Boolean normalize) в log4net.Util.SystemInfo.get_ConfigurationFileLocation () в log4net.Config.

Не удалось выполнить следующее действие: Требование. Тип первого разрешения, которое не удалось, был: System.Security.Permissions.FileIOPermission Зона сборки, в которой произошел сбой, была: Интернет.

Необработанное исключение: System.Security.SecurityException: запрос ConfigurationPermission завершился неудачно при попытке доступа к разделу конфигурации «nant». Чтобы разрешить всем вызывающим абонентам доступ к данным для этого раздела, установите для атрибута раздела 'requirePermission' значение 'false' в файле конфигурации, в котором объявлен этот раздел. ---> System.Security.SecurityException: запрос разрешения типа «System.Configuration.ConfigurationPermission, System.Configuration, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a» не выполнен. в System.Security.CodeAccessSecurityEngine.Check (требование объекта, StackCrawlMark и stackMark, логическое значение isPermSet) в System.Security.CodeAccessSecurityEngine.Check (ограничение CodeAccessPermission, StackCrawlMark и stackccessMark) в System.Security.Curity

(Ответ скоро будет опубликован как вопрос для справки ....)

Питер Бернье
источник
все еще та же проблема с NAnt 0.92 и Windows 8.1 . Но этого следовало ожидать. Как можно найти в другом комментарии также для Windows 10 - есть ли еще один тег, который нужно добавить?
Wolf

Ответы:

205

Как ни странно, это связано с тем, как исполняемые файлы извлекаются из архива Nant 0.91. (Для меня это не имело смысла, пока я не попробовал, но действительно работает ...)

Источник: http://surfjungle.blogspot.com/2011/11/tip-running-nant-091-on-windows-7.html

Я обнаружил, что проблема заключалась в безопасности Windows 7, связанной с тем, что для загруженного zip-файла NAnt 0.91 требовалась дополнительная конфигурация, связанная с безопасностью: перед извлечением необходимо щелкнуть правой кнопкой мыши на zip-файле, выбрать «Свойства» и на вкладке «Общие» нажать кнопку с пометкой «Разблокировать», затем нажмите «ОК» в окне «Свойства». Теперь извлеките файл в желаемое место , убедитесь, что он находится на системном пути, откройте новую командную строку, и NAnt должен успешно работать.

Питер Бернье
источник
1
Кроме того, сохраните загруженный файл .zip на свой локальный компьютер, затем Разблокируйте его, а затем Извлеките. Я пробовал это, пока файл был сохранен в сетевой папке, и Windows волновалась, как будто он не был разблокирован. #ProTip
Бретт Ригби
2
На случай, если кому-то интересно, это решение также работает для Windows 10
Sc0tTy
2
Еще одна странность (перевод): на немецком на кнопке написаноZulassen
Wolf
12

У меня была такая же проблема, однако на моей вкладке «Свойства / Общие» не было кнопки разблокировки. (Я не уверен, почему; похоже, что это потенциально связано с тем фактом, что я работаю внутри виртуальной машины VMWare Fusion.)

Эта проблема, казалось, исчезла, если я использовал что-то помимо встроенного в Windows экстрактора ZIP для извлечения файла. Например, я использовал 7-Zip для распаковки архива, и все работало нормально.

Майк
источник
Абсолютно! Но даже если вы в основном используете 7-Zip для сжатия, иногда бывает сложно нажать правый пункт контекстного меню при распаковке, потому что встроенная опция так привлекает ;)
Wolf
1

Вот как рекурсивно разблокировать все файлы с помощью PowerShell. Как ни странно, unblock-file проверяет свойство pspath только через канал.

get-childitem -recurse c:\nant-92 | 
get-item -stream zone.identifier -erroraction silentlycontinue | 
foreach { $_.pspath = $_.pspath -replace ':zone.identifier'; $_ } | 
unblock-file

Конечно, вы можете сделать это так, не зная, что было заблокировано, а что нет:

get-childitem -recurse c:\nant-92 | unblock-file
js2010
источник