# 1ヶ月半ほど放置しちゃってましたが、ちょっと復活
12月後半の話ですが、Visual Studio 2005 日本語版 (正式版) が入ってる環境に WinFX Dec 2005 CTP を入れてみました (Jan 2006 CTP ではありません)。入れたのは以下のものです。
- マイクロソフト プレリリース ソフトウェア WinFX Runtime コンポーネント - December CTP (Community Technology Preview)
http://www.microsoft.com/downloads/details.aspx?FamilyId=BD3BA2D5-6ADB-4FB2-A3AA-E16A9EA5603F&displaylang=ja - マイクロソフト プレリリース ソフトウェア WinFX Runtime 日本語 Language Pack - December CTP (Community Technology Preview)
http://www.microsoft.com/downloads/details.aspx?FamilyId=0943F94A-D35D-426F-A2AB-778C4DF4EC83&displaylang=ja - MicrosoftR WindowsR Software Development Kit (SDK) for the December 2005 Community Technology Preview (CTP)
http://www.microsoft.com/downloads/details.aspx?FamilyId=2297BDC9-B5AE-4B8A-B601-EEF54A52867A&displaylang=en - Microsoft Visual Studio Code Name “Orcas” Community Technology Preview - WinFX? Development Tools
http://www.microsoft.com/downloads/details.aspx?FamilyId=D1336F3E-E677-426B-925C-C84A54654414&displaylang=en
■ Windows SDK のセットアップで発生するエラー
Windows SDK をセットアップしようとするとすぐにエラーが発生してセットアップが終わってしまいます。エラーの内容として表示されるのは 「Windows SDK could not be configured, see the 'Installing the SDK' section of the Samples\Setup\HTML\ConfigDetails.htm document for more information.」 というものでさっぱり意味がわかりません (^^; いろいろ情報を探してみると、どうも .NET Compact Framework 2.0 が入っているとダメな模様。コントロールパネルの 「プログラムの追加と削除」 でいったん .NET Compact Framework 2.0 を削除してやると問題なく Windows SDK をセットアップすることができました。
■ WPF は動かず
WPF を使用しているサンプルを動かそうとすると例外が発生して動きませんでした。発生する例外は System.Windows.Serialization.BamlParseException で、これは Nov CTP のときといっしょです。ググってみると
Bad install of WPF?
こんな記事を発見。この記事は MSDN Product Feedback の 「BamlParseException when running WPF application」 へのコメントで、どうやら WPF のランタイムは起動時に GAC のアセンブリをロードしていて、そのときに例外が出るとダメっていうことみたいです。
ところで、VS2005 で WPF アプリを動かして例外の詳細を調べても BamlParseException だということしかわかりません。上記のフィードバックでは BamlParseException の原因となった CustomAttributeFormatException について書かれています。どうやったらこの例外が原因だとわかるのかすぐにはわかりませんでした。VS2005 のメニューの 「ツール」-「オプション」の 「デバッグ」-「全般」 の 「'マイコードのみ' 設定を有効にする」 のチェックをはずすとランタイム内部で例外が発生したときもブレークしてくれるようになります。
これで実行してみると、確かに BamlParseException の前に CustomAttributeFormatException が発生していてスタックトレースは
mscorlib.dll!System.Reflection.CustomAttributeEncodedArgument.ParseAttributeArguments(System.Reflection.ConstArray attributeBlob, ref System.Reflection.CustomAttributeCtorParameter[] customAttributeCtorParameters = {次元:[1]}, ref System.Reflection.CustomAttributeNamedParameter[] customAttributeNamedParameters = {次元:[3]}, System.Reflection.Module customAttributeModule) + 0x7b バイト
mscorlib.dll!System.Reflection.CustomAttributeData.CustomAttributeData(System.Reflection.Module scope, System.Reflection.CustomAttributeRecord caRecord) + 0x3b7 バイト
mscorlib.dll!System.Reflection.CustomAttributeData.GetCustomAttributes(System.Reflection.Module module = {Microsoft.JScript.ja.resources}, int tkTarget) + 0x4f バイト
mscorlib.dll!System.Reflection.CustomAttributeData.GetCustomAttributes(System.Reflection.Assembly target) + 0x3a バイト
PresentationFramework.dll!System.Windows.Serialization.XmlnsCache.EnumerateXmlnsAttributes(System.Reflection.Assembly assy = {Microsoft.JScript.resources, Version=7.0.3300.0, Culture=ja, PublicKeyToken=b03f5f7f11d50a3a}, bool isUserCache = true) + 0x24 バイト
(以下略)
となってました。
試しに WPF とは関係ない普通のプロジェクトを VS2005 で作って、
Assembly asm = Assembly.Load("Microsoft.JScript.resources, Version=7.0.3300.0, Culture=ja, PublicKeyToken=b03f5f7f11d50a3a");
IList<CustomAttributeData> c = CustomAttributeData.GetCustomAttributes(asm);
とやってみると確かに CustomAttributeFormatException が発生します。
いちおう、BamlParseException が発生する原因はわかりましたが GAC に入っているものを消しまくるわけにもいかないので、WPF ランタイムが対処してくれないことにはどうしようもなさそうです。
って、MSDN Product Feedback には 「Feb CTP で直る」 と書いてありますから、それ待ちですね。
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。