4

サーバーで動作させようとしている.net4を実行しているwebapiアプリケーションがあります。APIはローカルで正常に動作します。

アセンブリ'mscorlib、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=b77a5c561934e089'からタイプ'System.Runtime.CompilerServices.ExtensionAttribute'を読み込めませんでした。

これをサーバーで機能させるには、何を変更する必要がありますか?

4

5 に答える 5

8

.NET 4.5 ではなく .NET 4 に対してコンパイルしていたのですか? .NET 4.5 では、ExtensionAttribute を mscorlib に移動しました (拡張メソッドを mscorlib に配置できるようにするため)。.NET 4.5 に対して何かをコンパイルして .NET 4 で実行しようとすると、このようなエラーが発生することが予想されます。

編集: 実際、ILMerge を使用している場合は、次のブログ記事で説明されているように、実装へのパスではなく、targetplatform スイッチで .NET 4.0 参照アセンブリへのパスを使用する必要があります: http://www.mattwrock .com/post/2012/02/29/What-you-should-know-about-running-ILMerge-on-Net-45-Beta-assemblies-targeting-Net-40.aspx

于 2012-06-29T15:53:19.303 に答える
1

別の可能な解決策 (同じ例外を含むその他) は、ビルド サーバーに .net 4.0 参照アセンブリがないことです。.net 4.5 をインストールした後、開発ボックスからそれらをコピーする必要があります。

これらは通常、次のような場所にあります。

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0

詳細については、Marc のブログ投稿を参照してください。

于 2013-02-25T23:01:41.493 に答える
0

私は .NET の経験がほとんどなく、.NET でも同じ問題を抱えていましたSystem.Runtime.CompilerServices.ExtensionAttribute

解決策:プロジェクト参照、Framework 4.5 への参照を削除します。私の場合は、この Framework をインストールしていないためです。

于 2014-09-19T17:02:56.153 に答える
0

また、プロジェクトが依存している DLL も確認してください。私は同じ問題を抱えていましたが、単一の DLL が問題を引き起こしていることがわかりました。この DLL は、私のローカル マシンでは古いバージョン (.NET 4.0 用にコンパイル) で、サイトは localhost を介して正常に動作していましたが、サイトが失敗したライブ サーバーでは新しいバージョン (.NET 4.5 用にコンパイル) でした。

于 2012-11-14T20:02:38.427 に答える