2013-07-23 14 views
7

タイトルと同じくらい簡単です。 .NET 2.0から.NET 4へのソリューションをアップグレードしました。うまくいきました。そして、VS 2012をインストールしました.Net 4.5で、CustomAttributesを反映させようとしたときにExecutionEngineExceptionが発生しました。次のコードを使用して動的に生成されたDLL:VS2012/.Net 4.5をインストールした後に.Net 4.0 Assembly.GetCustomAttributesでExecutionEngineExceptionが表示されるのはなぜですか?

Assembly assembly = Assembly.LoadWithPartialName("DavesNamespace.Custom"); 
var attributes = assembly.GetCustomAttributes(typeof(ChecksumAttribute), true); 

私はとか、GetCustomAttributesのために指定されたタイプずに例外を取得し、それはそれが例外をスローし、その時点でのみだが、アセンブリが正常にロードされ、私は実際にすることができますブレークポイントをスティックするとCustomAttributesコレクションが表示されます。

オリジナルの.Net 2-3.5バージョンはvs2012をインストールして以来、まだ動作しています。

私は、オンラインで見ているExecutionEngineExceptionsで終わるvs2012で終わるいくつかの問題を見つけましたが、答えはありません。 この問題は、VS2012と.Net 4.5を削除することで解決できますが、リリースされた時点でVS2013社に移行しようとしているので、それは解決策ではありません。

EDIT: が持っているだけでこれを行い、サンプルアプリでエラー破壊に対するなったし、アプリケーションが構築されている場合でも例外はまだ(それのnull)以下のコメントで追加さ4.5

スタックトレースを標的にスローされます

+1

例外とスタックトレースを投稿できますか? – jessehouwing

+4

@mckjerral .NET Framework互換チームからです。私はこの問題を見てみたいと思います。 Microsoftのドットコムでnetfx45compatで私に連絡してもらえますか?問題を再現するコードがある場合は、それも素晴らしいでしょう。ありがとう、Varun – Varun

+0

@jessehouwing '{"タイプ 'System.ExecutionEngineException'の例外がスローされました。 "} HRESULT -2146233082 StackTrace null'そこには大きな助けはありません! – mckjerral

答えて

1

私は特定の状況で問題を解決しましたが、私は、.Net 4.5がDLLのCustomAttributesをどのように読み込むのかに関する文書化されていない変更だと考えています。

溶液をCustomAttributeBuilderAssemblyBuilder.Save()前の最後のものであることから、設定されて移動した第thing after AppDomain.CurrentDomain.DefineDynamicAssembly()に[アセンブリのすべてのコンテンツが読み込まれた後] [コンテンツのいずれかが移入された前】

LoadWithPartialName()の代わりにLoad(),の代替を使用するようにリファクタリングしましたが、例外がスローされた実際のコードは変更する必要はありませんでしたが、この回避策はまだLoadWithPartialName()で動作しました。

アセンブリのコンテンツの後にカスタム属性を追加すると、間違った場所にカスタム属性が置かれることがありますか?しかし、この問題はMSが調査するために記録されています。

関連する問題