Як вирішити помилки конфігурації за допомогою 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, Версія = 4.0.0.0, Culture = нейтральний, PublicKeyToken = b77a5c561934e089" не вдався. на System.Security.CodeAccessSecurityEngine.Check (Об'єктний попит, StackCrawlMark & ​​stackMark, Boolean isPermSet) на System.Security.CodeAccessSecurityEngine.Check (CapAccessPermission cap, StackCrawlMark & ​​StackMema.SermMeck (StackMark & ​​StackMeckMark) String dir, Boolean normalize) в log4net.Util.SystemInfo.get_ConfigurationFileLocation () в log4net.Config.

Не вдалося діяти: Попит Тип першого дозволу, який не вдався, був: System.Security.Permissions.FileIOPermission Зона збірки, яка не вдалася, була: Інтернет

Неопрацьоване виняток: System.Security.SecurityException: Не вдалося отримати запит на ConfigurationPermission під час спроби отримати доступ до розділу конфігурації 'nant'. Щоб дозволити всім абонентам отримувати доступ до даних цього розділу, встановіть атрибут розділу "RequPermission" рівний "false" у файлі конфігурації, де оголошено цей розділ. ---> System.Security.SecurityException: запит дозволу типу 'System.Configuration.ConfigurationPermission, System.Configuration, Version = 4.0.0.0, Culture = нейтральний, PublicKeyToken = b03f5f7f11d50a3a' не вдалося. в System.Security.CodeAccessSecurityEngine.Check (Об'єктний попит, StackCrawlMark & ​​stackMark, Boolean isPermSet) на System.Security.CodeAccessSecurityEngine.Check (CapAccessPermission cap, StackCrawlMark & ​​stackCmissionPark на StackMmission & StackMmissionPark на StackMark & ​​StackMmissionPark).

(Відповідь найближча, розміщуючи як запитання для ознайомлення ....)


та сама проблема з NAnt 0.92 та Windows 8.1 . Але це було очікувати. Як можна знайти в іншому коментарі також для Windows 10 - чи варто додати ще один тег?
Вовк

Відповіді:


205

Як не дивно, це пов'язано з тим, як виконувані файли витягуються з архіву Nant 0.91. (Це не мало сенсу для мене, поки я насправді не спробував, але насправді це працює ...)

Джерело: http://surfjungle.blogspot.com/2011/11/tip-running-nant-091-on-windows-7.html

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


1
Також збережіть завантажений .zip файл на свій локальний комп'ютер, а потім Розблокуйте його, після чого витягніть. Я спробував це, поки файл було збережено на мережевій спільній доступності, і Windows злякало, ніби його не розблокували. #ProTip
Brett Rigby

2
Якщо хтось цікавився, це рішення також працює для Windows 10
Sc0tTy

2
Ще одна дивацтво (переклад): німецькою мовою кнопка позначенаZulassen
Вовк

12

У мене була ця сама проблема, проте вкладка "Властивості / Загальні" не містила кнопку розблокування. (Я не впевнений, чому; схоже, це потенційно пов'язане з тим, що я працюю у віртуальній машині VMWare Fusion.)

Ця проблема, схоже, усунеться, якщо я використовував щось, крім вбудованого екстрактора ZIP для вилучення файлу. Наприклад, я використовував 7-Zip для витягування архіву, і все працювало нормально.


Абсолютно! Але навіть якщо ви здебільшого використовуєте 7-Zip для компресії, іноді заплутано потрапляти на потрібний пункт контекстного меню при розпакуванні, тому що вбудований варіант настільки приваблює ;)
Wolf

1

Ось як розблокувати всі файли рекурсивно після факту за допомогою shellhell. Дивно, файл розблокування перевіряє лише властивість 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.