这些Mono / xbuild警告意味着什么,我该如何修复它们?

时间:2011-08-29 09:44:59

标签: mono xbuild

我使用Mono的xbuild 2.10.5.0构建VS2010项目。这些项目使用“.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.

我担心我不理解这些,"Unable to find framework corresponding to the target framework moniker"唯一的Google匹配就是对该错误消息的提交。

这些警告意味着什么,我该如何解决? Mono根本不支持“客户端配置文件”吗?如果是这样,我在Mono文档中找不到任何相关内容。导致未解决的mscorlib引用的原因是什么导致这两个System引用报告之间存在冲突?

1 个答案:

答案 0 :(得分: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组合集。