8

Monoのxbuild2.10.5.0を使用してVS2010プロジェクトをビルドします。プロジェクトは、ターゲットフレームワークとして「.NETFramework 3.5クライアントプロファイル」を使用します(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これら2つの参照はどこにありますか?System

4

1 に答える 1

7

あなたは正しく推測しています-Monoは「Client」プロファイルをサポートしていません(たとえば、「Client」の言及については3.5 Microsoft.Common.targetsのMonoバージョンを検索してください)。完全な3.5および4.0プロファイルのみをサポートします。それらを修正するには、プロジェクトファイルでサポートされているプロファイルの1つを指定する必要があります。プロファイルの選択は、ビルド中に使用可能な参照のセットのみを制限します。「クライアント」プロファイルでコンパイルされたアセンブリは、「フル」プロファイルで問題なく機能します。

4.0プロファイル(デフォルトのフォールバック)でコンパイルしているため、mscorlib, Version=2.0.0.0未解決の参照が発生しています。プロファイルをサポートされている値に設定すると、表示されなくなります。プロジェクトファイルを変更したくない場合はxbuild /p:TargetFrameworkProfile=""、でビルドできます。これにより、3.5セットのアセンブリが正しく選択されます。

于 2011-08-29T09:54:41.707 に答える