2010-09-15 10 views
17

Total de preguntas para novatos. Estoy tratando de ejecutar un script Nant en un servidor de compilación (guión muy básico, sin hacer nada), y está fallando con el errorError de Nant con malos permisos en el servidor de compilación

System.Security.SecurityException: solicitud de permiso de tipo 'System.Security .Permissions.FileIOPermission, mscorlib, Version = 4.0.0.0, Culture = neutral, PublicKeyToken = b77a5c561934e089 'failed.

¿Qué debo hacer para que funcione?

+0

proporciona un poco más detalles: ¿qué servidor de compilación estás usando ?, ¿qué está haciendo tu script de Nant? posiblemente pegue el código de muestra. –

+0

Parece que esta pregunta resuelve el mismo problema: http://stackoverflow.com/questions/8605122/how-do-i-resolve-configuration-errors-with-nant-0-91 Espero que ayude! –

Respuesta

14

@TK tiene la respuesta aquí, creo, aunque puede no ser tan simple como si nant se está ejecutando o no desde una unidad de red.

Tuve un problema similar al @Aidan. Resultó que había copiado los ensamblajes nantcontrib (v. 86) en mi sistema de compilación de tal manera que Windows 7 restringía el acceso a los ensamblajes nantcontrib. Para solucionar esto, primero copié el archivo zip nantcontrib en mi máquina virtual de compilación, y luego sobrescribí los ensamblajes bloqueados con el contenido de .zip. Windows 7 vio que los archivos procedían del sistema local (y no de la fuente de la que no había confiado desde que originalmente copié) y desbloqueó los ensamblajes.

Probablemente haya un medio más directo de confiar en los ensamblajes (como el enlace de @TK), pero esto funcionó para mí.

Si ve este error de nuevo, buscar dos cosas:

En primer lugar, Nant (v 0.91 alpha 2) hace un trabajo decente informa exactamente cuál es el error. Vi el mismo error que @Adian, junto con una pila de errores completo, y, finalmente, esta información (énfasis mío):

El conjunto o dominio de aplicación que no era: NAnt.Contrib.Tasks, versión = 0,86. 3319,0, Culture = neutral, PublicKeyToken = null el método que provocó el fracaso fue: NAnt.Core.Task CreateChildTask (System.Xml.XmlNode)
la zona de la asamblea que fallidos era: Internet
la URL de el ensamblado que falló fue: file: /// C:/Archivos de programa (x86)/NAntBuilder 2/nantcontrib/bin/NAnt.Contrib.Tasks.dll

En segundo lugar, consulte la página de propiedades del ensamblado ofensivo (en mi caso, Nant.Contrib.Tasks.dll). Si el archivo se ha copiado de una fuente que no es de confianza, verá un botón "Desbloquear" en la sección de propiedades (debajo de Avanzado ...) junto con una nota que indica que los archivos provienen de una fuente que no es de confianza.

0

¿Está ejecutando el script de Nant en una unidad de red compartida?

Si es así, puede que necesite configurar la política de .NET Caspol para permitir que el código .NET se ejecute en un recurso compartido de red.

Using CasPol to Fully Trust a Share

Este enlace puede ser capaz de ayudarle.

25

Mi mensaje de error menciona la "Zona de Internet". Esto es probablemente porque descargué binarios comprimidos de SourceForge.Comprimí y luego descomprimí para quitar la zona y me funcionó muy bien.

En Windows 7 (o similar):

  1. Seleccionar todos los archivos de la carpeta de NAnt
  2. clic derecho, Enviar a> Carpeta comprimida (en zip)
  3. Haga clic derecho en el nuevo archivo zip y elija "Extraer todo ..."
  4. Extracto de una nueva carpeta

los archivos extraídos ya no serán de la "Zona de Internet". Puede copiar de nuevo en el directorio original si lo desea.

+1

Funciona perfecto, gracias! – Eddietec

6

Este problema se debe a que Windows configuró los metadatos de los archivos '"Zone.Identifier" en NTFS en' Internet '(o en otra zona que debe desbloquear explícitamente para obtener acceso).

Para no hacer que los metadatos de seguridad de archivos se escriban al copiar archivos o, en mi caso, descomprimir desde un archivo zip en una unidad de red, copie el archivo zip a una carpeta local antes de descomprimirlo, como se sugirió anteriormente, o ejecute la herramienta "streams.exe" de Sysinternals para eliminar esos metadatos.

Por ejemplo, si me quedo streams.exe en exe en mi carpeta de descargas:

streams.exe *.exe 

Streams v1.56 - Enumerate alternate NTFS data streams 
Copyright (C) 1999-2007 Mark Russinovich 
Sysinternals - www.sysinternals.com 

C:\Downloads\jre-6u27-windows-x64.exe: 
    :Zone.Identifier:$DATA  26 

Normalmente, streams.exe podría no mostrar ninguna información de metadatos si los archivos de todos los originó a partir de una carpeta local. Si ve estos metadatos ":Zone.Identifier:$DATA" (almacenados en NTFS como una secuencia de datos alternativa), también debería ver un botón Desbloquear en el cuadro de diálogo de Propiedades de los archivos.

Para desbloquear los archivos a granel, ejecute "streams.exe -s -d *.*" desde su carpeta problemática.

+0

Hice esto en el directorio NAnt inútilmente, luego lo hice en el directorio fuente NH y las cosas comenzaron a desarrollarse. –

0

Cuando descargue NAnt, debe hacer clic con el botón derecho en el archivo zip (antes de extraer todo), luego en Propiedades y hacer clic en desbloquear archivo. Luego extrae todo y funcionará.

Cuestiones relacionadas