2011-08-29 14 views
8

Creo proyectos VS2010 con xbuild 2.10.5.0 de Mono. Los proyectos usan el '.NET Framework 3.5 Client Profile' como el framework objetivo (deben ser 3.5 compatibles y no necesito más que las partes del perfil del cliente).¿Qué significan estas advertencias Mono/xbuild y cómo las soluciono?

estoy recibiendo las siguientes advertencias:

Build succeeded. 

Warnings: 

c:\Project\MyProject.csproj (default targets) -> C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets (GetReferenceAssemblyPaths target) -> 
    C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets: warning : Unable to find framework corresponding to the target framework moniker '.NETFramework,Version=v3.5,Profile=Client'. Framework assembly references will be resolved from the GAC, which might not be the intended behavior. 

c:\Project\MyProject.csproj (default targets) -> C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets (ResolveAssemblyReferences target) -> 
    C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets: warning : Reference 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' not resolved 
    C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets: warning : Found a conflict between : 'System' and 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Using 'System' reference. 
    C:\PROGRA~2\Mono\lib\mono\4.0\Microsoft.Common.targets: warning : Found a conflict between : 'System.Core' and 'System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. Using 'System.Core' reference. 

Me temo que no entiendo estas y la única Google golpeado por "Unable to find framework corresponding to the target framework moniker" es el commit de ese mensaje de error.

¿Qué significan estas advertencias y cómo puedo solucionarlas? ¿El 'perfil del cliente' no es compatible con Mono? Si es así, no pude encontrar nada sobre eso en la documentación de Mono. ¿Qué causa la referencia no resuelta mscorlib y dónde están estas dos referencias System que informa un conflicto entre ellas?

Respuesta

7

Está adivinando correctamente: Mono no admite el perfil 'Cliente' (por ejemplo, busque Mono version of 3.5 Microsoft.Common.targets para cualquier mención de 'Cliente'), solo los perfiles completos 3.5 y 4.0. Para solucionarlos, debe especificar uno de los perfiles admitidos en su archivo de proyecto. La selección de perfil solo restringe el conjunto de referencias disponibles durante la compilación, un ensamblado compilado con el perfil 'Cliente' funcionará perfectamente en el perfil 'Completo'.

La referencia no resuelta mscorlib, Version=2.0.0.0 está sucediendo porque está compilando con un perfil 4.0 (que es la alternativa predeterminada). Desaparecerá una vez que establezca su perfil en un valor compatible. Si no desea cambiar su archivo de proyecto, puede compilarlo con xbuild /p:TargetFrameworkProfile="", que elige correctamente el conjunto de 3.5 conjuntos.

+1

¿Tienes un enlace para esta documentación? ¿No es una limitación bastante importante cuando quieres desarrollar proyectos con Mono y VS? No estoy seguro si mi cliente está de acuerdo con reorientar este proyecto a 3.5 completos. –

+0

Actualizado mi respuesta. – skolima

+0

Eso realmente no explica por qué Mono carece de soporte para ellos (y si es intencional o simplemente aún no se implementó) y cómo se supone que debo evitar esta limitación. No puedo encontrar nada sobre esto en el rastreador de problemas Mono, tampoco. –

Cuestiones relacionadas