Wie löse ich Konfigurationsfehler mit Nant 0.91?

106

Nach dem Herunterladen von Nant 0.91 werden einige ziemlich kryptische Konfigurationsfehler in Bezug auf Konfiguration oder Sicherheit angezeigt (siehe unten).

Ich versuche einfach, meine ausführbaren Nant-Dateien von 0,86 auf 0,91 zu aktualisieren.

Wie kann ich die folgenden Probleme beheben, wenn ich auf einem Windows 7-Computer baue?

log4net: ERROR XmlConfiguratorAttribute: Ausnahme beim Abrufen von ConfigurationFileLocation. Muss ConfigurationFileLocation auflösen können, wenn die Eigenschaften ConfigFile und ConfigFileExtension nicht festgelegt sind. System.Security.SecurityException: Anforderung der Berechtigung vom Typ 'System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' fehlgeschlagen. at System.Security.CodeAccessSecurityEngine.Check (Objektanforderung, StackCrawlMark & ​​stackMark, Boolean isPermSet) at System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMark) at System.Secec.DecD. String dir, Boolean normalize) bei log4net.Util.SystemInfo.get_ConfigurationFileLocation () bei log4net.Config.

Die fehlgeschlagene Aktion war: Anforderung Der Typ der ersten fehlgeschlagenen Berechtigung war: System.Security.Permissions.FileIOPermission Die Zone der fehlgeschlagenen Assembly war: Internet

Nicht behandelte Ausnahme: System.Security.SecurityException: Anforderung für ConfigurationPermission fehlgeschlagen, als versucht wurde, auf den Konfigurationsabschnitt 'nant' zuzugreifen. Damit alle Aufrufer auf die Daten für diesen Abschnitt zugreifen können, setzen Sie das Abschnittsattribut 'requirePermission' in der Konfigurationsdatei, in der dieser Abschnitt deklariert ist, auf 'false'. ---> System.Security.SecurityException: Anforderung der Berechtigung vom Typ 'System.Configuration.ConfigurationPermission, System.Configuration, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' fehlgeschlagen. at System.Security.CodeAccessSecurityEngine.Check (Objektanforderung, StackCrawlMark & ​​stackMark, Boolean isPermSet) at System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMark) at System.Secerm.Code.

(Die Antwort erfolgt in Kürze und wird als Referenzfrage veröffentlicht.)

Peter Bernier
quelle
immer noch das gleiche Problem mit NAnt 0.92 und Windows 8.1 . Das war aber zu erwarten. Wie in einem anderen Kommentar auch für Windows 10 zu finden ist - gibt es ein weiteres Tag zum Hinzufügen?
Wolf

Antworten:

205

Seltsamerweise hängt dies damit zusammen, wie die ausführbaren Dateien aus dem Nant 0.91-Archiv extrahiert werden. (Das ergab für mich keinen Sinn, bis ich es tatsächlich ausprobiert habe, aber es funktioniert tatsächlich ...)

Quelle: http://surfjungle.blogspot.com/2011/11/tip-running-nant-091-on-windows-7.html

Ich stellte fest, dass das Problem mit der Sicherheit von Windows 7 zusammenhängt, da für die heruntergeladene NAnt 0.91-Zip-Datei eine zusätzliche sicherheitsrelevante Konfiguration erforderlich war: Vor dem Extrahieren muss man mit der rechten Maustaste auf die Zip-Datei klicken, Eigenschaften auswählen und auf der Registerkarte Allgemein auf die Schaltfläche klicken mit der Bezeichnung Entsperren, und klicken Sie dann im Eigenschaftenfenster auf OK. Extrahieren Sie nun die Datei an den gewünschten Speicherort , stellen Sie sicher, dass sie sich im Systempfad befindet, öffnen Sie eine neue Befehlszeile und NAnt sollte erfolgreich ausgeführt werden.

Peter Bernier
quelle
1
Speichern Sie außerdem die heruntergeladene ZIP-Datei auf Ihrem lokalen Computer und entsperren Sie sie, gefolgt von Extrahieren. Ich habe dies versucht, während die Datei auf einer Netzwerkfreigabe gespeichert wurde und Windows ausflippte, als wäre sie nicht entsperrt. #ProTip
Brett Rigby
2
Falls sich jemand wunderte, funktioniert diese Lösung auch für Windows 10
Sc0tTy
2
Eine weitere (Übersetzungs-) Kuriosität: Auf Deutsch ist der Knopf beschriftetZulassen
Wolf
12

Ich hatte das gleiche Problem, aber meine Registerkarte Eigenschaften / Allgemein enthielt keine Schaltfläche zum Entsperren. (Ich bin mir nicht sicher, warum; es scheint, dass dies möglicherweise mit der Tatsache zusammenhängt, dass ich in einer virtuellen VMWare Fusion-Maschine ausgeführt werde.)

Dieses Problem schien zu verschwinden, wenn ich etwas anderes als den in Windows integrierten ZIP-Extraktor zum Extrahieren der Datei verwendete. Zum Beispiel habe ich 7-Zip verwendet, um das Archiv zu extrahieren, und alles hat gut funktioniert.

Mike
quelle
Absolut! Aber selbst wenn Sie meistens 7-Zip zum Komprimieren verwenden, ist es manchmal verwirrend, beim Dekomprimieren den richtigen Kontextmenüpunkt zu treffen, weil die eingebaute Option so attraktiv ist ;)
Wolf
1

Hier erfahren Sie, wie Sie alle Dateien nachträglich mit Powershell rekursiv entsperren. Seltsamerweise prüft die Blockierungsdatei nur die pspath-Eigenschaft über die Pipe.

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

Natürlich können Sie es so machen, ohne zu wissen, was blockiert wurde oder nicht:

get-childitem -recurse c:\nant-92 | unblock-file
js2010
quelle