¿Cómo resuelvo errores de configuración con Nant 0.91?

106

Después de descargar Nant 0.91, recibo algunos errores de configuración bastante crípticos relacionados con la configuración o la seguridad (ver más abajo).

Estoy intentando simplemente actualizar mis ejecutables Nant de 0.86 a 0.91.

¿Cómo puedo resolver los problemas a continuación cuando construyo en una máquina con Windows 7?

log4net: ERROR XmlConfiguratorAttribute: Excepción al obtener ConfigurationFileLocation. Debe poder resolver ConfigurationFileLocation cuando las propiedades ConfigFile y ConfigFileExtension no están configuradas. System.Security.SecurityException: la solicitud de permiso del tipo 'System.Security.Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089' falló. en System.Security.CodeAccessSecurityEngine.Check (Object demand, StackCrawlMark & ​​stackMark, Boolean isPermSet) en System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMark) en System.Security.CodeAmandDomain (System.Security.CodeAmandDomain). String dir, Boolean normalize) en log4net.Util.SystemInfo.get_ConfigurationFileLocation () en log4net.Config.

La acción que falló fue: Demanda El tipo del primer permiso que falló fue: System.Security.Permissions.FileIOPermission La zona del ensamblado que falló fue: Internet

Excepción no controlada: System.Security.SecurityException: La solicitud de ConfigurationPermission falló al intentar acceder a la sección de configuración 'nant'. Para permitir que todas las personas que llaman accedan a los datos de esta sección, establezca el atributo de sección 'requirePermission' igual a 'falso' en el archivo de configuración donde se declara esta sección. ---> System.Security.SecurityException: La solicitud de permiso de tipo 'System.Configuration.ConfigurationPermission, System.Configuration, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' falló. en System.Security.CodeAccessSecurityEngine.Check (Object demand, StackCrawlMark & ​​stackMark, Boolean isPermSet) en System.Security.CodeAccessSecurityEngine.Check (CodeAccessPermission cap, StackCrawlMark & ​​stackMark) en System.Security.CodeAccessPermission.

(La respuesta está próxima, se publicará como una pregunta de referencia ...)

Peter Bernier
fuente
sigue siendo el mismo problema con NAnt 0.92 y Windows 8.1 . Pero esto era de esperar. Como se puede encontrar en otro comentario también para Windows 10 , ¿hay otra etiqueta para agregar?
Wolf

Respuestas:

205

Curiosamente, esto está relacionado con cómo se extraen los ejecutables del archivo Nant 0.91. (Esto no tenía sentido para mí hasta que realmente lo probé, pero realmente funciona ...)

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

Descubrí que el problema estaba relacionado con la seguridad de Windows 7, ya que el archivo zip NAnt 0.91 descargado necesitaba una configuración adicional relacionada con la seguridad: antes de extraerlo, uno debe hacer clic derecho en el archivo zip, seleccionar Propiedades y en la pestaña General, hacer clic en el botón etiquetado Desbloquear, luego haga clic en Aceptar en la ventana Propiedades. Ahora, extraiga el archivo a la ubicación deseada , asegúrese de que esté en la ruta del sistema, abra una nueva línea de comando y NAnt debería ejecutarse correctamente.

Peter Bernier
fuente
1
Además, guarde el archivo .zip descargado en su computadora local, luego Desbloquéelo, seguido de Extracción. Intenté esto mientras el archivo estaba guardado en un recurso compartido de red y Windows se asustó como si no estuviera desbloqueado. #ProTip
Brett Rigby
2
En caso de que alguien se pregunte, esta solución también funciona para Windows 10
Sc0tTy
2
Otra rareza (traducción): en alemán el botón está etiquetadoZulassen
Wolf
12

Tuve el mismo problema, sin embargo, mi pestaña Propiedades / General no contenía un botón de desbloqueo. (No estoy seguro de por qué; parece que esto está potencialmente relacionado con el hecho de que estoy ejecutando dentro de la máquina virtual VMWare Fusion).

Este problema parecía desaparecer si usaba algo además del extractor ZIP incorporado de Windows para extraer el archivo. Por ejemplo, utilicé 7-Zip para extraer el archivo y todo funcionó bien.

Miguel
fuente
¡Absolutamente! Pero incluso si usa principalmente 7-Zip para comprimir, a veces es confuso presionar el elemento del menú contextual correcto al descomprimir, porque la opción incorporada es muy atractiva ;)
Wolf
1

A continuación, se explica cómo desbloquear todos los archivos de forma recursiva después del hecho con powershell. Extrañamente, unblock-file solo comprueba la propiedad pspath sobre la tubería.

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

Por supuesto que podrías hacerlo de esta manera, sin saber cuál estaba bloqueado o no:

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