Что означают эти предупреждения Mono / xbuild и как их исправить? - PullRequest
8 голосов
/ 29 августа 2011

Я строю проекты VS2010 с помощью Monu's xbuild 2.10.5.0. В проектах в качестве целевой платформы используется «.NET Framework 3.5 Client Profile» (они должны быть совместимы с 3.5, и мне не нужно больше, чем части профиля клиента).

Я получаю следующие предупреждения:

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.

Боюсь, я не понимаю их, и единственный хит Google для "Невозможно найти фреймворк, соответствующий прозвищу целевой фреймворк" - это фиксация для этого сообщения об ошибке.

Что означают эти предупреждения и как я могу их исправить? «Профиль клиента» вообще не поддерживается Mono? Если так, я не смог найти ничего об этом в документации Mono. Что вызывает неразрешенную ссылку mscorlib и где эти две ссылки System указывают на конфликт между?

1 Ответ

7 голосов
/ 29 августа 2011

Вы правильно угадываете - Mono не поддерживает профиль «Клиент» (например, поиск Mono версия 3.5 Microsoft.Common.targets для любого упоминания «Клиент»), только полный 3.5 и 4.0 профили. Чтобы исправить их, вам нужно указать один из поддерживаемых профилей в вашем файле проекта. Выбор профиля ограничивает только набор ссылок, доступных во время сборки, сборка, скомпилированная с помощью профиля «Клиент», будет отлично работать с профилем «Полный».

Неразрешенная ссылка mscorlib, Version=2.0.0.0 возникает из-за того, что вы компилируете профиль 4.0 (это запасной вариант по умолчанию). Он исчезнет, ​​как только вы установите в своем профиле поддерживаемое значение. Если вы не хотите изменять файл проекта, вы можете собрать его с помощью xbuild /p:TargetFrameworkProfile="", который правильно выбирает набор сборок 3.5.

...