ページ

2006年2月13日月曜日

MSBee - .NET Framework 1.1 アプリのビルドに MSBuild を使う

MSBuild Extras - Toolkit for .NET 1.1 "MSBee"


.NET Framework 1.1 アプリをビルドするときに MSBuild を使えるようにするツールキットだそうです。


Readme.doc をざっと見ただけですが、中身は .NET 1.1 の C#・VB.NET 向けの .targets ファイルとちょっとしたタスクを追加するための MSBee.dll とのこと。今のところ純粋に 「MSBuild で .NET 1.1 の C#・VB.NET コンパイラを呼び出せるようにする」 という目的のもので、VS2005 で .NET 1.1 アプリがビルドできるようになるとか、そういうものではないようです。(というか、Readme.doc の 7. FAQ のところに 「今のところ VS2005 IDE をサポートする予定はない」 とはっきり書かれてます(^^; )

RSS API を使った Podcast ソフト

WinCast: A podcast receiver built-on the Windows RSS Foundation. より


RSS の購読や取得、メンテナンスなどは IE 7 にまかせて、取得した RSS に書かれている mp3 ファイルの URL を RSS API で取り出してダウンロードしてやれば Podcast ソフトの出来上がり、ということかな?


(IE 7 を入れる環境がないので試せないんですが)

2006年2月10日金曜日

HTML 内のクライアントサイドスクリプトを VS2005 でデバッグ

Script Debugging with Visual Studio より


HTML 内のクライアントサイドスクリプト (JavaScript や VBScript など) をデバッグするには (ローカルにある HTML ファイルの場合)



  1. IE のメニュー 「ツール」-「インターネットオプション」-「詳細設定」-「ブラウズ」 のところにある 「スクリプトのデバッグをしようしない (Internet Explorer)」 のチェックをはずしておく。

  2. Visual Studio 2005 を立ち上げる。

  3. HTML ファイルを開く。

  4. スクリプト上にブレークポイントを仕掛ける。

  5. IE で HTML ファイルを開く。

  6. VS2005 のメニュー 「デバッグ」-「プロセスにアタッチ」 で 5 で開いた IE にアタッチする。

とやればいいようです。
上記の blog では F5 / デバッグ開始 や F10・F11 / ステップ実行ができるように書いてありますが、単に HTML ファイルを読み込んだだけではこれらは有効になりませんでした。なので、上記のように別プロセスの IE にアタッチしてやる必要がありました。


また、ローカルではなくネット上のスクリプトの場合は、



  1. VS2005 のメニュー 「表示」-「その他のウインドウ」-「Web ブラウザ」 でブラウザを開き、目的の URL を開く。

  2. VS2005 内のブラウザ上で右クリックして 「ソースの表示」 をする。

  3. 表示されたソース上のスクリプトにブレークポイントを仕掛ける。

  4. IE を立ち上げて目的の URL を開く。

  5. VS2005 のメニュー 「デバッグ」-「プロセスにアタッチ」 で 4 で開いた IE にアタッチする。

とやるとできました。


また、関連しそうな情報が
方法 : クライアント側スクリプトのデバッグを有効にする
にあります。(これは ASP.NET のデバッグ中にクライアントサイドスクリプトをデバッグする方法のことみたいです)


しかし、VS2005 って XSLT のデバッグもできるし、なんでもできるんだな。
ちなみに、XSLT のデバッグは



  1. XSLT のファイルを開く。

  2. プロパティウインドウの 「入力」 「出力」 を適当に指定。

  3. 適当にブレークポイントをセット。

  4. メニュー 「XML」-「XSLT をデバッグ」 でデバッグ開始。

こんな感じ。

Borland が IDE 部門売却?

Borland Leaves IDE Business より


eWeek – Borland to Divest Tools with Segue Buyout
が紹介されています。なにやら、IDE 部門を売るようなことが書かれてるみたいです。これは Borland がもはや Delphi、C++ Builder、C# Builder、JBuilder、Kylix、InterBase を売らないであろうことも意味する、とかなんとか。そりゃ、大ニュース!日本語のニュースはないのか?(^^;


@IT - 米ボーランドがIDE事業を売却、「Delphi」はどこへ
ありました。

C# から VB にコードを変換する VS2005 アドイン

A Visual Studio Add-In That Converts C# Code To Visual Basic


MSDN Magazine (英語) の記事です。
ConvertCSharp2VBCodeTranslator といった C# から VB へのコード変換を行ってくれる Web や Web Service があります。これを呼び出して C# から VB にコードを変換する VS2005 アドインを作ってみましょう。という記事みたいです。


って、記事はほとんど読んでないんですが、コードもダウンロードできるので試してみました。
ダウンロードしたファイルには PasteAsVBSetup.msi なんかも含まれていますが、これでセットアップしてもうまくいきませんでした。なので、C:\Documents and Settings\USERNAME\My Documents\Visual Studio 2005\Addins に



  • PasteAsVB.dll

  • PasteAsVB.dll.config

  • PasteAsVBAddIn.AddIn

  • PasteAsVBAddIn.dll

をコピーして VS2005 を起動してやると、メニューの 「ツール」-「アドイン マネージャ」 に "PasteAsVBAddin" が現れました。
で C# のコードをコピーして 「編集」-「Paste As Visual Basic」 してやるとダイアログが表示されて VB に変換できました。(ただ、Kamal Patel's Converter のほうは動きませんでしたが)


アドインというより、コンバートに使っている Web Service 次第なわけですが、単純なコードはそれなりに変換できました。

Anders Hejlsberg のインタビュービデオ

Life and Times of Anders Hejlsberg


Anders Hejlsberg のインタビュービデオです。当然英語ですし transcript もないので何を言ってるのか私にはほとんどわかりませんが(泣)


ちなみに、このビデオは技術的なことを語っているというものではありません。「徹子の部屋」 みたいな感じです。

Microsoft Feeds API

Microsoft Feed API documentation より


 Microsoft Feeds API が紹介されています。文字通り RSS フィードをごにょごにょする API なようです。どうやら IE 7 に搭載される RSS 機能は IE 7 に閉じたものではなく、こういった API を通して操作できるものになるようです。


リファレンスを見ると完全に COM です。上記 blog にも 「なんでマネージドじゃないんだ?いまだに C++ 使ってるやついる?」 みたいなコメントがついてますが 「もちろんマネージドも提供されるよ。たぶん WinFX の一部としてね」 なんていう返事が返されてます。

C# 3.0 の Extension Method と Lambda Expression

Neighbourhood super-hero LINQ comes to the rescue より


object[] list = { 1, 2, "abhinaba", 5f, "basu" };

 

foreach( var v in list.Where(x => x is string))

{

Console.WriteLine(v);


いい感じです。
ところで、この場合の var の型は何になるんでしょう?「x is string」 を評価した結果は string にしかなりえないからちゃんと string になるんでしょうか?それとも x は object だから var も object になるんでしょうか?

Hello World (DynamicILInfo 版)

Hello World with DynamicILInfo より


C# 上で IL を直にごにょごにょして Hello World (^^;

C# 用コードスニペット集

Visual Studio 2005 Code Snippets
http://msdn.microsoft.com/vstudio/downloads/codesnippets/


C# 用のコードスニペットがたくさんダウンロードできます。
"Application Code Snippets" などの各リンクからは VSI がダウンロードできるようです。これをダウンロードしてダブルクリックすればどこに入れるか聞かれてスニペットを追加できます。
"click here" のリンクからはすべてのスニペットが入った MSI がダウンロードできます。これをダウンロードしてダブルクリックすれば解凍できます (デフォルトだと C:\Documents and Settings\USERNAME\My Documents\MSDN\Visual C# 2005 Code Snippets )。解凍後、VS2005 のメニューの 「ツール」-「コード スニペット マネージャ」 の 「追加」 ボタンでフォルダを指定すればまとめてスニペットを追加できます。


さっそく入れてみましたが、、、数が多すぎてどれがどんなものなのやら、、、(^^;

Visual Studio の Automation サンプル

Automation Samples for Visual Studio
http://msdn.microsoft.com/vstudio/downloads/code/automation/default.aspx


Visual Studio を Automation で操作するサンプルコード集です。VS.NET 2002、2003、2005 のそれぞれがあります。2005 の中身をちょっと見てみましたが、C# で書かれているもの、VB で書かれているもの、C#・VB の両方のソースがあるものがあるみたいです。

2006年2月9日木曜日

windowscommunication.net、windowsworkflow.net

http://windowscommunication.net/
http://windowsworkflow.net/


まぁ、ドメイン名を見ればわかると思いますが、前者が Windows Communication Foundation (WCF) のサイト、後者が Windows Workflow Foundation (WWF) のサイトです。どちらも Microsoft が運営しているようです。


http://windowspresentation.net/ はまだ何にもないみたい。
# けど、windowspresentation.net を whois で見ると所有者は Microsoft になってる。
# さすが、抜け目ないな(^^

Paint.NET Language Pack (日本語版)

ずいぶん前に紹介 した Paint.NET ですが、かなりバージョンも上がってるし、いつの間にか日本語 Language Pack も出てたのであらためて入れてみました。


■ Paint.NET について
Paint.NET は、C# で作られたペイントソフトです。ソースも公開されています。Version 2.5 は .NET Frmamework 1.1 用、Version 2.6 は .NET Framework 2.0 用みたいです。(ただし、2.6 はまだ RC 1)


■ Paint.NET を入れてみる
まずは、ダウンロードページ からダウンロードしてセットアップ。単にダウンロードした exe を実行するだけ。セットアップの時点では英語とドイツ語しか選択できないので、とりあえず英語で。なお、今回は 2.6 RC1 にしました。


次に Japanese の Language Pack をダウンロード。こちらは zip ファイルなので、Paint.NET をセットアップしたフォルダ (デフォルトでは C:\Program Files\Paint.NET ) にフォルダなどもそのまま解凍します。具体的には、zip の中にある PaintDotNet.Strings.ja.resources ファイルは C:\Program Files\Paint.NET フォルダに、それ以外のファイルは C:\Program Files\Paint.NET\Resources\ja フォルダにコピーすることになります。


これで Paint.NET を起動してみるとちゃんと日本語になってました。


■ Paint.NET の使い勝手
まだ、入れてみたばかりでよくわかりません(^^;

WinDbg を使って深~いところを覗く

If broken it is, fix it you should
WinDbg を使って (主にマネージドな世界の) 深いところにガシガシ入っていく blog (^^; ちなみに、WinDbg はカーネルやドライバなどといった典型的なアンマネージドな世界のデバッギングにもマネージドな世界のデバッギングにも使える模様。


って、私は WinDbg ってほとんど知らないんですけど、使いこなせたらおもしろそうだなぁ。


最新版のダウンロードやオーバービューなどはこちら。
Debugging Tools for Windows - Overview

Mix 06

http://www.mix06.com/


2006年 3月 20日~22日にラスベガスで開催される Microsoft の新しいカンファレンスだそうです。IE7、Windows Media、Windows Live!、Atlas といった Web 関連が主でデベロッパ、デザイナー、ビジネス・プロフェッショナルを対象としているそうです。

マネージドなメソッドをアンマネージドな関数にコールバック関数として渡す

Gotchas with Reverse Pinvoke (unmanaged to managed code callbacks) より


Anonymous Method をアンマネージドなコールバック関数ポインタとして渡す例が紹介されています。
まだ、ちゃんと読んでないんですが、マーシャリングのためのすべてのマジックは CLR がやってくれるらしいです。

VS2005 のデバッガでランタイム内部で発生した例外を捕捉する

(すぐ下で書いたけど、埋もれてしまいそうなのでこれだけ抜き出し)


VS2005 のデバッガは、自分のコード内で例外が発生するとすぐに捕捉してくれますが、ランタイム内部で発生した例外はそれが自分のコードに到達したときに始めて捕捉するようです。これは、ランタイム内部に 「例外を catch して別の例外を投げる」 ようなところがあると元になった例外がわからなくて困ることがあります。(Exception.InnerException に入ってれば何も問題ないんですけどね)


そんなときは、VS2005 のメニューの 「ツール」-「オプション」の 「デバッグ」-「全般」 の 「'マイコードのみ' 設定を有効にする」 のチェックをはずせば OK です。これでランタイム内部での例外発生もすぐに捕捉してくれるようになります。


(それにしても 「'マイコードのみ' 設定を有効にする」 じゃまったく意味がわかんないよ(泣) )

WinFX Dec 2005 CTP を VS2005 日本語版に入れてみる - 再び玉砕(笑)

# 1ヶ月半ほど放置しちゃってましたが、ちょっと復活


12月後半の話ですが、Visual Studio 2005 日本語版 (正式版) が入ってる環境に WinFX Dec 2005 CTP を入れてみました (Jan 2006 CTP ではありません)。入れたのは以下のものです。



■ 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 で直る」 と書いてありますから、それ待ちですね。

2005年12月15日木曜日

C++/CLI が ECMA で認可

C++/CLI now an International Standard! より


C++/CLI が ECMA で認可されたそうです。また、ECMA から ISO に提出されたそうです。


さがしてみたらありました。
Standard ECMA-372 C++/CLI Language Specification (December 2005)

これですね。

VS2005 RC、beta、CTP のアンインストール上の注意

Visual Studio 2005 のセットアップは以前の RC、beta、CTP などのアンイストールを自動では行ってくれません。手動できっちりアンインストールする必要があります。詳しいことは、


ディベロッパー製品開発統括部 Blog: 「Visual Studio 2005最終リリースバージョンのセットアップの際に


を参照されるといいと思います。


ただ、これだけだと足りないかもしれません。
VS2005  は C:\Documents and Settings の下などにもいろいろとファイルを作ります。ただ、このようなところにあるものは、ユーザの設定値やユーザが作成したファイルなので勝手に消すわけにもいきません。なので、基本的にはアンイストールを行っても削除されません。自動アンインストールツールを作っても削除されません。もし心配ならこれらのファイルも消しておいたほうがいいでしょう。(私は、"Visual Studio 2005" とか "Visual Studio 8" とかっていう 2005 に関連しそうなフォルダをバックアップを取りながら消すようにしてます)


で、きちんとアンインストールしたつもりでも、ツールボックスの内容がおかしかったり、ひどいときは IDE でのキー入力もまともに動かなかったりする場合があるようです。どうやらこれは、
How to resolve errors opening currentsettings.vssettings in the final release of VS 2005
によると "C:\Documents and Settings\USERNAME\My Documents\Visual Studio 2005\Settings\currentsettings.vssettings" が残っているのが原因のようです。そして、これは



  1. Visual Studio IDE のすべてのインスタンスを閉じる。

  2. スタートメニューからコマンドプロンプトを起動する。

  3. そのコマンドプロンプトに
    "%programfiles%\Microsoft Visual Studio 8\Common7\IDE\devenv.exe" /resetuserdata
    (VS2005 がデフォルトのパスにインストールされている場合)
    と入力して devenv.exe を /resetuserdata 付きで実行する。

  4. devenv.exe が終了するまで 1~2分待つ。タスクマネージャで devenv.exe が終了したか確認する。

とすることで解決できるようです。
リファレンスには /resetuserdata というのは載ってなくて、/ResetSettings があります。上記の blog によると /resetuserdata が正しいみたいですが。。。

Visual Studio 2005 日本語版 MSDN Subscriber Download に登場

もうすでに多くの方がお気づきだとは思いますが。。。
MSDN Subscriber Download にて Visual Studio 2005 日本語版の各種 (Express、Standard、Professional、Team Editions、Team Suite など。もちろん MSDN のサブスクリプションレベルによってどこまで見えるかは違うと思いますが) がダウンロードできるようになっているようです。


まだ、 http://www.microsoft.com/japan/msdn/vstudio/express/ こちらは beta2 のままみたいですが、きっと近日中に公開されるんじゃないかと思います。

2005年12月14日水曜日

CSS プロパティウインドウアドイン

CSS Property Window Add-in For VS2005 Released! より


CSS (カスケーディング・スタイル・シート) をプロパティウインドウで確認・編集できるようにする VS2005 用アドインが紹介されています。CSS Properties window, with screenshots では画面イメージ付きで紹介されています。
ただ、VS2005 日本語版でちゃんと動くのかどうかなどは不明です。

2005年12月9日金曜日

Exception の代わりに NotImplementedException を使う

Exception instead of NotImplementedException より


VS2005 では interface を書いたときに出てくるスマートタグでコードを自動生成されると throw new Exception( ... ) という中身のメソッドが追加されます。これを Exception ではなく NotImplementedException に変更する方法が紹介されています。"Program Files\Microsoft Visual Studio 8\VC#\Snippets\1033\Refactoring\" に入っている MethodStubBody.snippet ファイルを書き換えればいいそうです。ちなみに、VS2005 日本語版 RC では 1033 ではなく 1041 でした。あと、MethodStubBody.snippet ではなく MethodStub.snippet みたいです。

Windows Live Local

Windows Live Local が公開されたそうです。けど、あいかわらず日本とかは荒い地図しかありません。
これは、MSN Virtual Earth の新バージョンにあたるみたいです。というか、http://virtualearth.msn.com/ にアクセスすると http://local.live.com/ にリダイレクトされるようになってますね。


Windows Live Local is live!
こちらで Microsoft 本社(シアトル)やビル・ゲイツ宅へのリンクなんかが紹介されています。


Virtual Earth SDK
SDK の Version 2.0 も公開されています。

コードネーム Phoenix (MSResearch)

"Codename: Phoenix" Prerelease is Now Available より


Microsoft Research のコードネーム Phoenix Framework というもののプレリリースがダウンロードできるようになったそうです。
「Phoenix はソフトウエアを最適化したり分析したりするフレームワークのコードネーム。このフレームワークは、すべての将来の Microsoft のコンパイラ技術の基礎である」 とかなんとか。。。よくわかんないけど、なんとなくおもしろそうなのでとりあえずメモ。