107 Stimmen

Wie kann ich Konfigurationsfehler mit Nant 0.91 beheben?

Nachdem ich Nant 0.91 heruntergeladen habe, erhalte ich einige ziemlich kryptische Konfigurationsfehler, die sich auf die Konfiguration oder die Sicherheit beziehen (siehe unten).

Ich versuche, meine Nant-Executables einfach von 0.86 auf 0.91 zu aktualisieren.

Wie kann ich die folgenden Probleme bei der Erstellung auf einem Windows 7-Rechner beheben?

log4net:ERROR XmlConfiguratorAttribute: Ausnahme beim Abrufen von ConfigurationFileLocation. Muss in der Lage sein, ConfigurationFileLocation aufzulösen, wenn die Eigenschaften ConfigFile und ConfigFileExtension nicht gesetzt 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(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) at System.Security.CodeAccessPermission.Demand() at System.AppDomainSetup.VerifyDir(String dir, Boolean normalize) at log4net.Util.SystemInfo.get_ConfigurationFileLocation() at log4net.Config.XmlConfiguratorAttribute.ConfigureFromFile(Assembly sourceAssembly, ILoggerRepository targetRepository)

T Nachfrage Der Typ der ersten fehlgeschlagenen Berechtigung war: System.Security.Permissions.FileIOPermission Die Zone der fehlgeschlagenen Assembly war: Internet

Unbehandelte Exception: System.Security.SecurityException: Anfrage für ConfigurationPermission fehlgeschlagen, während versucht wurde, auf den Konfigurationsabschnitt 'nant' zuzugreifen. Um allen Aufrufern den Zugriff auf die Daten dieses Abschnitts zu ermöglichen, setzen Sie das Abschnittsattribut 'requirePermission' gleich 'false' in der Konfigurationsdatei, in der dieser Abschnitt deklariert ist. ---> 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(Object demand, StackCrawlMark& stackMark, Boolean isPermSet) at System.Security.CodeAccessSecurityEngine.Check(CodeAccessPermission cap, StackCrawlMark& stackMark) at System.Security.CodeAccessPermission.Demand() at System.Configuration.BaseConfigurationRecord.CheckPermissionAllowed(String configKey, Boolean requirePermission, Boolean isTrustedWithoutAptca) --- Ende der inneren Ausnahme Stack Trace --- at System.Configuration.BaseConfigurationRecord.CheckPermissionAllowed(String configKey, Boolean requirePermission, Boolean isTrustedWithoutAptca) at System.Configuration.BaseConfigurationRecord.GetSectionRecursive(String configKey, Boolean getLkg, Boolean checkPermission, Boolean getRuntimeObject, Boolean requestIsHere, Object& result, Object& resultRuntimeObject) at System.Configuration.BaseConfigurationRecord.GetSection(String configKey) at System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.GetSection(String sectionName) at System.Configuration.ConfigurationManager.GetSection(String sectionName) at NAnt.Console.ConsoleStub.Framework.GetRuntimeFramework() at NAnt.Console.ConsoleStub.Main(String[] args

(Die Antwort steht noch aus, ich stelle sie als Frage zum Nachschlagen ein....)

210voto

Peter Bernier Punkte 7928

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

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

Ich fand heraus, dass das Problem mit der Sicherheit von Windows 7 zusammenhing, da die heruntergeladene NAnt 0.91-Zip-Datei vor dem Entpacken eine zusätzliche sicherheitsbezogene Konfiguration erforderte, Klicken Sie mit der rechten Maustaste auf die Zip-Datei, wählen Sie "Eigenschaften" und klicken Sie auf der Registerkarte "Allgemein" auf die Schaltfläche "Freigabe" und dann im Fenster "Eigenschaften" auf "OK". Entpacken Sie nun die Datei an den gewünschten Ort stellen Sie sicher, dass es sich im Systempfad befindet, öffnen Sie eine neue Befehlszeile und NAnt sollte erfolgreich laufen.

13voto

Mike Punkte 1579

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

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

2voto

Michael M Punkte 1173

Dies kann durch ein anderes Problem verursacht werden: Nachdem der Download der NANT-Zip-Datei abgeschlossen war, hat Windows 10, aus welchem Grund auch immer, automatisch ein Windows-Datei-Explorer-Fenster geöffnet und die ZIP-Datei selbst geöffnet.

Ich habe das nicht bemerkt und versehentlich direkt den FOLDER innerhalb die Zip-Datei an meinem Zielort. Die Datei wurde nicht ordnungsgemäß entpackt, obwohl alle Dateien und Verzeichnisse intakt zu sein schienen. Dies könnte immer noch ein Problem mit der Art und Weise sein, wie Windows gezippte Archive handhabt. Ich erhielt die gleichen Sicherheitsfehler wie in diesem Artikel beschrieben.

Indem Sie das NAnt-Archiv neu herunterladen und dann mit 7-zip um sie normal zu extrahieren, traten die Sicherheitsprobleme nicht mehr auf.

1voto

js2010 Punkte 17269

Hier erfahren Sie, wie Sie alle Dateien nachträglich mit Powershell rekursiv entsperren können. Seltsamerweise prüft unblock-file nur auf 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önnte man das auch so machen, ohne zu wissen, was blockiert wurde oder nicht:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X