1

ソリューションを .NET 4.5 にアップグレードして以来、TFS 2012 ビルド サーバーを使用して .NET 4.5 ビルドを作成する際に問題が発生しています。TFS ビルドが実行時例外をスローする理由を特定するのに苦労しています。

  • ソリューション内のすべてのプロジェクトは、.NET 4.5 をターゲット フレームワークとして宣言します。
  • ソリューションは、VS2012 Pro を実行しているローカルの開発者マシンで適切にビルドおよび実行されます。
  • ソリューションは、Team Foundation Build Server 2012 で適切にビルドされます。
  • ビルド サーバーでビルドされたソリューションは、以下の実行時例外をスローします。
  • VS2012 からのビルドとビルド サーバーの両方が、実行時に C:\Windows\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll を参照します (アプリケーションのログ記録と procmon.exe によるトレースの両方で確認されます)。
  • C:\Windows\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll のバージョンは 4.0.30319.18034 です。
  • ildasm.exe で参照すると、C:\Windows\Microsoft.NET\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll に「System.Runtime.CompilerServices.ExtensionAttribute」型が含まれていることがわかります。
  • アプリケーションは 32 ビットです。
  • ビルド プロセスで ILMerge.exe が使用されているとは思えません (個別の dll または各プロジェクトがあります)。

ビルド サーバーからのビルドで発生した実行時例外は、バージョン 4.5 で mscorlib.dll に移動された予期される型 'ExtensionAttribute' を見つけることができないことを示しています。

System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.TypeLoadException: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
   at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
   at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
   at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
   at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType ...). System.ServiceModel.FaultException`1[System.ServiceModel.ExceptionDetail]: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. (Fault Detail is equal to An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.TypeLoadException: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
   at System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type)
   at System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext)
   at System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments)
   at System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType ...).

表向きは mscorlib.dll の .NET 4.5 バージョンに動的にリンクしているのに、TFS ビルドがこの実行時例外をスローするのはなぜですか?

SA に関するいくつかの質問:

4

1 に答える 1

0

ビルド マシンに Windows 8 SDK がインストールされていますか? Windows 8 SDK は、.NET 4.5 参照アセンブリをインストールします。ビルド スクリプトが .NET4.5 バイナリを直接参照するのではなく、.NET 4.5 参照アセンブリを参照していることを確認する必要があります。正しくない .NET 4.5 バイナリを直接参照している可能性があります。

于 2013-05-03T01:44:54.760 に答える