Jak rozwiązać błędy konfiguracji w Nant 0.91?

106

Po pobraniu Nant 0.91 otrzymuję dość tajemnicze błędy konfiguracyjne związane z konfiguracją lub bezpieczeństwem (patrz poniżej).

Próbuję po prostu zaktualizować moje pliki wykonywalne Nanta z 0.86 do 0.91.

Jak mogę rozwiązać poniższe problemy podczas tworzenia na komputerze z systemem Windows 7?

log4net: ERROR XmlConfiguratorAttribute: wyjątek podczas pobierania ConfigurationFileLocation. Musi być w stanie rozpoznać ConfigurationFileLocation, gdy właściwości ConfigFile i ConfigFileExtension nie są ustawione. System.Security.SecurityException: żądanie uprawnienia typu „System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089” nie powiodło się. at System.Security.CodeAccessSecurityEngine.Check (Object request, StackCrawlMark & ​​stackMark, Boolean isPermSet) w System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMark) w System.Security.CodeAcandAppPermain (SystemSecurity.CodeAcandAppDomify) String dir, Boolean normalize) w log4net.Util.SystemInfo.get_ConfigurationFileLocation () w log4net.Config.

Akcja, która się nie powiodła, to: Żądanie Typ pierwszego uprawnienia, które się nie powiodło, to: System.Security.Permissions.FileIOPermission Strefa zestawu, która się nie powiodła, to: Internet

Nieobsługiwany wyjątek: System.Security.SecurityException: Żądanie ConfigurationPermission nie powiodło się podczas próby uzyskania dostępu do sekcji konfiguracji „nant”. Aby umożliwić wszystkim wywołującym dostęp do danych w tej sekcji, ustaw atrybut sekcji „requirePermission” equal ”false” w pliku konfiguracyjnym, w którym ta sekcja jest zadeklarowana. ---> System.Security.SecurityException: żądanie uprawnienia typu „System.Configuration.ConfigurationPermission, System.Configuration, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a” nie powiodło się. at System.Security.CodeAccessSecurityEngine.Check (Object request, StackCrawlMark & ​​stackMark, Boolean isPermSet) w System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMark) w System.Security.CodeAccessPermission.

(Odpowiedź zostanie opublikowana jako pytanie referencyjne ...)

Peter Bernier
źródło
nadal ten sam problem z NAnt 0.92 i Windows 8.1 . Ale to było oczekiwane. Jak można znaleźć w innym komentarzu również dla Windows 10 - czy jest jeszcze jeden tag do dodania?
Wolf,

Odpowiedzi:

205

Co dziwne, jest to związane ze sposobem wyodrębniania plików wykonywalnych z archiwum Nant 0.91. (To nie miało dla mnie sensu, dopóki tego nie wypróbowałem, ale faktycznie działa ...)

Źródło: http://surfjungle.blogspot.com/2011/11/tip-running-nant-091-on-windows-7.html

Zauważyłem, że problem był związany z bezpieczeństwem systemu Windows 7, ponieważ pobrany plik zip NAnt 0.91 wymagał dodatkowej konfiguracji związanej z bezpieczeństwem: przed rozpakowaniem należy kliknąć plik zip prawym przyciskiem myszy, wybrać Właściwości i na karcie Ogólne kliknąć przycisk oznaczony jako Odblokuj, a następnie kliknij OK w oknie Właściwości. Teraz wypakuj plik do żądanej lokalizacji , upewnij się, że znajduje się w ścieżce systemowej, otwórz nowy wiersz poleceń, a NAnt powinien działać pomyślnie.

Peter Bernier
źródło
1
Zapisz również pobrany plik .zip na komputerze lokalnym, a następnie Odblokuj go, a następnie wyodrębnij. Próbowałem tego, gdy plik był zapisywany w udziale sieciowym, a system Windows przestraszył się, jakby nie był odblokowany. #ProTip
Brett Rigby
2
Na wypadek, gdyby ktoś się zastanawiał, to rozwiązanie działa również w systemie Windows 10
Sc0tTy
2
Kolejna (tłumaczeniowa) osobliwość: w języku niemieckim przycisk jest oznaczonyZulassen
Wolf
12

Miałem ten sam problem, jednak moja karta Właściwości / Ogólne nie zawierała przycisku odblokowania. (Nie jestem pewien dlaczego; wydaje się, że jest to potencjalnie związane z faktem, że pracuję w maszynie wirtualnej VMWare Fusion).

Ten problem zdawał się znikać, gdy do wyodrębnienia pliku użyłem czegoś innego niż wbudowany w system Windows ekstraktor ZIP. Na przykład użyłem 7-Zip do wypakowania archiwum i wszystko działało dobrze.

Mikrofon
źródło
Absolutnie! Ale nawet jeśli używasz głównie 7-Zip do kompresji, czasami mylące jest kliknięcie odpowiedniego elementu menu kontekstowego podczas dekompresji, ponieważ wbudowana opcja jest tak atrakcyjna ;)
Wolf
1

Oto jak odblokować wszystkie pliki rekurencyjnie po fakcie za pomocą PowerShell. Co dziwne, unblock-file sprawdza tylko właściwość pspath w potoku.

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

Oczywiście możesz to zrobić w ten sposób, nie wiedząc, który został zablokowany lub nie:

get-childitem -recurse c:\nant-92 | unblock-file
js2010
źródło