2

今日、新しいプロジェクトを継承し、何百もの警告をなくそうとして、これに行き詰まりました。ASP.NET MVC 2、フレームワーク 4.0 プロジェクトは VS2010 で問題なくコンパイルされますが、ビルド プロセスが aspnet_compiler.exe に渡されると、次のようになります ([出力] ウィンドウから切り取って貼り付けます)。

AfterBuild:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v temp -p C:\data\crecare\CreCare20110403\CreCare.Mvc\\..\CreCare.Mvc 
ASPNETCOMPILER : warning CS1685: The predefined type 'System.Runtime.CompilerServices.ExtensionAttribute' is defined in multiple assemblies in the global alias; using definition from 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll'

オブジェクト ブラウザーで検索しても、プロジェクト内の参照をアセンブリごとに確認しても、複数の定義は見つかりません。私が知る限り、以前のチームは以前の ASP.NET バージョンで拡張機能を構築しようとはしませんでした (このエラーの原因の 1 つは、私が学んだことです)。これは最初から 4.0 をターゲットにしていたと思います。

これは単なる警告であり、無視できると思います (aspnet_compiler.exe で /nowarn を実行することさえできないため、確認する必要があります)。これを追い詰める方法について何か提案はありますか?プロジェクトへのパスに含まれる「\..\」について心配する必要はありますか? 64 ビット Windows を実行しています。x86 と 64 を同時に見ていませんか?

ソリューションで VS2010 のオブジェクト ブラウザーを使用すると、aspnet_compiler.exe が検出するアセンブリ内の型のみが検出されることに注意してください。タイプの検索では、1 つの結果しか得られません。aspnet_compiler.exe は、VS2010 が検索しない場所を検索していますか?

4

1 に答える 1

1

あなたが言ったように、これはMono.Cecilによるものです。

Mono.Cecil.Dll への参照があり、拡張メソッドを実装している場合、この警告はエラーになる可能性があります。これは、コンパイラを実行すると Mono.Cecil 実装が優先されるためです。

.net 4 用であるはずの db4o アセンブリがこれを考慮していない理由はわかりませんが、同じ問題を調べたので、同じことを確認できます。

通常の参照を使用する代わりに、Mono.Cecil をコピーして出力する (リンクとして追加し、出力にコピーするように設定する) だけである限り、すべて正常に機能します。警告は煩わしいものですが、db4o 上のこれらのアセンブリに関する奇妙な状況を考えると、現時点ではそのソースのビルドに対処しないことをお勧めします。

于 2011-05-17T04:32:31.560 に答える