2012-06-06 13 views
8

Al intentar compilar MonoDevelop con Mono para Android, aparece este error. De acuerdo con la depuración, no se encuentra en mi código, así que me quedé desorientado. ¿Alguna idea?Error MSB4185: "System.Globalization.CultureInfo" no se ha habilitado para la ejecución

error MSB4185: La función "CurrentUICulture" en el tipo de "System.Globalization.CultureInfo" no se ha habilitado para su ejecución. (MSB4185)

+0

Tengo este problema también. ¿Estás ejecutando Windows 8 por casualidad? Me pregunto si podría tener que ver con eso. –

+0

Veo esto en Windows 8 RP también. Ver esto: https: //bugzilla.xamarin.com/show_bug.cgi? Id = 5597 –

+0

¿Podría estar esto relacionado con tener instalado .NET Framework 4.5? – Dominique

Respuesta

1

Después de desinstalar .NET Framework 4.5 RC de mi máquina con Windows 7, este error desapareció. Por supuesto, asegúrese de tener un tiempo de ejecución de .NET válido después de desinstalar 4.5.

6

Poseo MSBuild (y este código). Es un error que se origina en el archivo microsoft.csharp.targets, como probablemente lo dice el mensaje de error. En existe una función de propiedad:

$ ([System.Globalization.CultureInfo] :: CurrentUICulture.Name)

Lo que significa que el error es que se cree que esta función no se encuentra en "lista segura" de MSBuild . Estas son funciones seleccionadas que no tienen efectos secundarios. (Si desea utilizar cualquier función, debe tener una variable de entorno MSBUILDENABLEALLPROPERTYFUNCTIONS = 1).

Realmente no sé por qué esto aparecería a menos que de alguna manera estés usando el 4.5 microsoft.csharp.targets con el microsoft.build.dll 4.0 (que no lo tenía en la lista segura). No he recibido informes de esto excepto en relación con Monodevelop.

Disculpe mi ingenuidad, pero asumo que Monodevelop está utilizando Microsoft .NET Framework con Microsoft MSBuild y no una reimplementación de eso.

Dan

+0

La desinstalación de 4.5 "arreglaría" esto porque microsoft.csharp.targets retrocedería a la versión 4.0. Por supuesto, no tienes 4.5 más entonces. – dan

+0

También se me ocurre que puede verificar trivialmente que microsoft.csharp.targets y microsoft.build.dll están sincronizados creando un proyecto de C# con msbuild.exe. Esto supone que Monodevelop no está cargando copias diferentes desde alguna ubicación personalizada, por supuesto. – dan

+2

Uf, descubrí el problema. Aparentemente estás usando el antiguo OM (desde microsoft.build.engine.dll) en lugar del 4.0+ OM (desde microsoft.build.dll). Reenviamos el antiguo OM para compatibilidad, por si acaso alguien (como MonoDevelop aparentemente) lo estaba usando. msbuild.exe 4.0+ y VS2010 +, por supuesto, usan el nuevo OM, por lo que el anterior no fue probado. Y si usa el antiguo OM, en el proyecto 4.0 o 4.5, con 4.5 .NET Framework instalado, Y la propiedad BuildingInVisualStudio = true (que supongo que Monodevelop establece) obtiene este error. – dan

5

La solución de trabajo para mí es la siguiente:

Abra un CMD y ejecuta este comando en él: setx MSBUILDENABLEALLPROPERTYFUNCTIONS 1

Otra solución Creo que está disponible es la instalación de Mono Runtime y establecerlo como su tiempo de ejecución de CLR predeterminado en Herramientas -> Opciones -> .Runtimes de .NET.

+0

la opción CMD funcionó perfectamente para mí –

Cuestiones relacionadas