2011-08-29 78 views
8

我使用Mono的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 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問題跟蹤器上也找不到這方面的內容。 –

相關問題