2011-08-29 3 views
8

모노의 xbuild 2.10.5.0을 사용하여 VS2010 프로젝트를 빌드합니다. 프로젝트는 '.NET Framework 3.5 Client Profile'을 대상 프레임 워크로 사용합니다 (3.5 호환 가능해야하며 클라이언트 프로파일 부분 이상은 필요하지 않습니다).이러한 Mono/xbuild 경고의 의미는 무엇이며 어떻게 수정합니까?

나는 다음과 같은 경고를 받고 있어요 :

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. 

가 나는이 이해가 안 무서워 유일한 구글 "Unable to find framework corresponding to the target framework moniker"에 대한 공격은 그 오류 메시지를 커밋합니다.

이 경고는 무엇을 의미하며 어떻게 해결할 수 있습니까? Mono는 '클라이언트 프로파일'을 지원하지 않습니까? 그렇다면, 나는 Mono 문서에서 그걸 발견 할 수 없었습니다. 해결되지 않은 mscorlib 참조의 원인은 무엇입니까?이 두 System 참조는 어디에 충돌이 발생 했습니까?

답변

7

Mono는 '클라이언트'프로필을 지원하지 않습니다 (예 : '클라이언트'에 대한 검색 Mono version of 3.5 Microsoft.Common.targets). 전체 3.5 및 4.0 프로필 만 지원합니다. 이를 수정하려면 프로젝트 파일에서 지원되는 프로파일 중 하나를 지정해야합니다. 프로파일 선택은 빌드 중에 사용 가능한 참조 세트 만 제한하며 '클라이언트'프로파일로 컴파일 된 어셈블리는 '전체'프로파일에서 정상적으로 작동합니다.

mscorlib, Version=2.0.0.0 4.0 프로파일 (기본 폴백)으로 컴파일 중이므로 해결되지 않은 참조가 발생합니다. 프로파일을 지원되는 값으로 설정하면 사라집니다. 프로젝트 파일을 변경하지 않으려면 xbuild /p:TargetFrameworkProfile=""으로 빌드하면 3.5 세트의 어셈블리가 올바르게 선택됩니다.

+1

설명서 링크가 있습니까? Mono와 VS 모두를 사용하여 프로젝트를 개발하고자 할 때 그다지 중요한 제한 사항이 아닙니까? 내 고객이이 프로젝트를 전체 3.5로 재조정해도 괜찮은지 잘 모르겠습니다. –

+0

내 대답이 업데이트되었습니다. – skolima

+0

사실 Mono가 왜 그들에 대한 지원이 부족한 지 (그리고 그것이 의도적인지 아직 구현되지 않았는지) 그리고 어떻게이 한계를 피하기 위해 노력해야 하는지를 설명하지 못합니다. 나는 Mono issue tracker에서 이것에 관해서는 아무것도 찾을 수 없다. –