7

AspConf での Scott Gu の基調講演を見て、MVC4 で Windows Azure Web サイトを試すことに興奮しました。4.5 ではなく .NET Framework 4.0 を対象とするように再構成した後、既存の MVC アプリケーションをデプロイしようとしましたが、次のエラーが発生しました。

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

既にいくつかの NuGet パッケージを追加していたので、Ninject と関係があるのではないかと考えたので、NuGet パッケージを使用せずに .NET 4.0 フレームワークをターゲットとする新しい MVC プロジェクトを作成し、Visual Studio 2012 RC Publish オプションを使用して Windows Azure にデプロイしました (右図)。 -Web プロジェクトをクリックしても、まだこのエラーが発生します。

何が起こっているのか、この問題を解決する方法を知っている人はいますか? 前もって感謝します。

完全なスタック トレースを含む:

[TypeLoadException: アセンブリ 'mscorlib、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' から型 'System.Runtime.CompilerServices.ExtensionAttribute' を読み込めませんでした。]
System.ModuleHandle.ResolveType(RuntimeModule モジュール、Int32 typeToken、IntPtr * typeInstArgs、Int32 typeInstCount、IntPtr* methodInstArgs、Int32 methodInstCount、ObjectHandleOnStack タイプ) +0
System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule モジュール、Int32 typeToken、RuntimeTypeHandle[] typeInstantiationContext、RuntimeTypeHandle[] methodInstantiationContext) +180
System.Reflection.RuntimeModule.ResolveType( Int32 metadataToken、Type[] genericTypeArguments、Type[] genericMethodArguments) +192
System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord、MetadataImport スコープ、Assembly& lastAptcaOkAssembly、RuntimeModule decorModule、MetadataToken decoratedToken、RuntimeType attributeFilterType、Boolean mustBeInheritable、Object[] attributes、IList derivedAttributes、RuntimeType& attributeType、IRuntimeMethodInfo& ctor、Boolean& ctorHasParameters、Boolean& isVarArg) + 115
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decorModule, Int32 decorMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) +426 System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly アセンブリ,RuntimeType caType) +103
System.Reflection.RuntimeAssembly.GetCustomAttributes(type attributeType、Boolean inherit) +64
WebActivator.AssemblyExtensions.GetActivationAttributes(アセンブリ アセンブリ) +64 WebActivator.ActivationManager.RunActivationMethods() +143 WebActivator.ActivationManager.Run() +22

[InvalidOperationException: 型 WebActivator.ActivationManager でのアプリケーション開始前の初期化メソッド Run は、次のエラー メッセージで例外をスローしました: 型 'System.Runtime.CompilerServices.ExtensionAttribute' をアセンブリ 'mscorlib、Version=4.0.0.0、Culture から読み込めませんでした' =neutral, PublicKeyToken=b77a5c561934e089'..]
System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 メソッド) +423
System.Web.Compilation.BuildManager.CallPreStartInitMethods() +306
System.Web.Hosting.HostingEnvironment.Initialize( ApplicationManager appManager、IApplicationHost appHost、IConfigMapPathFactory configMapPathFactory、HostingEnvironmentParameters、hostingParameters、PolicyLevel policyLevel、例外 appDomainCreationException) +677

[HttpException (0x80004005): 型 WebActivator.ActivationManager で実行されるアプリケーション前の開始初期化メソッドは、次のエラー メッセージで例外をスローしました: 型 'System.Runtime.CompilerServices.ExtensionAttribute' をアセンブリ 'mscorlib、バージョン = 4.0 から読み込めませんでした。 0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089'..]
System.Web.HttpRuntime.FirstRequestInit(HttpContext コンテキスト) +9090044 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext コンテキスト) +97 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr、 HttpContext コンテキスト) +256

4

3 に答える 3

1

[Web アプリケーションの公開] ウィザードで、[設定] | [設定] を選択した場合。宛先で追加のファイルを削除すると、この問題はなくなりました。

于 2012-09-18T03:34:07.573 に答える
0

.NET FX 参照に関する問題のように思えます。

ASP.NET MVC 4 リリース ノートによると、Entity Framework nuget パッケージと .NET 4.5 --> .NET 4 からのダウングレードに問題があります。 http://www.asp.net/whitepapers/mvc4-release-notes# _Toc303253815

ASP.NET MVC 4 プロジェクトのターゲットを 4.5 から 4.0 に変更しても、EntityFramework アセンブリ参照が更新されない: 4.5 をターゲットにした後で ASP.NET MVC 4 プロジェクトをターゲット 4.0 に変更すると、EntityFramework アセンブリへの参照は引き続き 4.5 バージョンを指します。 . この問題を解決するには、EntityFramework NuGet パッケージをアンインストールして再インストールします。

于 2012-09-11T07:22:27.420 に答える
0

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

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

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

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

于 2013-02-25T22:48:53.893 に答える