2011-08-29 9 views
8

Costruisco progetti VS2010 con xbuild di Mono 2.10.5.0. I progetti utilizzano il "Profilo client .NET Framework 3.5" come framework di destinazione (devono essere compatibili con 3.5 e non ho bisogno di più delle parti del profilo del client).Cosa significano questi avvisi mono/xbuild e come posso correggerli?

sto ottenendo i seguenti avvisi:

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. 

ho paura che non capisco questi e il solo Google ha colpito per "Unable to find framework corresponding to the target framework moniker" è il commit per questo messaggio di errore.

Cosa significano questi avvertimenti e come posso risolverli? Il "profilo cliente" non è supportato da Mono? Se è così, non ho trovato nulla a riguardo nella documentazione di Mono. Che cosa causa il riferimento irrisolto mscorlib e dove sono questi due riferimenti System che segnala un conflitto tra?

risposta

7

Stai indovinando correttamente - Mono non supporta il profilo "Cliente" (ad esempio ricerca Mono version of 3.5 Microsoft.Common.targets per qualsiasi menzione di "Client"), solo i profili completi 3.5 e 4.0. Per risolverli, è necessario specificare uno dei profili supportati nel file di progetto. La selezione del profilo limita solo la serie di riferimenti disponibili durante la compilazione, un assieme compilato con il profilo "Cliente" funzionerà correttamente sul profilo "Completo".

Il riferimento non risolto è mscorlib, Version=2.0.0.0 perché si sta compilando con un profilo 4.0 (che è il fallback predefinito). Scomparirà una volta impostato il profilo su un valore supportato. Se non si desidera modificare il file di progetto, è possibile creare con xbuild /p:TargetFrameworkProfile="", che sceglie correttamente il set 3.5 di assiemi.

+1

Hai ottenuto un collegamento alla documentazione per questo? Non è una limitazione piuttosto significativa quando vuoi sviluppare progetti sia con Mono che VS? Non sono sicuro che il mio cliente stia bene con il retargeting di questo progetto su 3.5 completi. –

+0

Aggiornato la mia risposta. – skolima

+0

Questo non spiega in realtà perché a Mono manca il supporto (e se è intenzionale o non ancora implementato) e come dovrei aggirare questa limitazione. Nemmeno io riesco a trovare nulla su questo nel tracker dei problemi di Mono. –

Problemi correlati