PGP 公開鍵とメールアドレス

Xbox Friends

小物類

  • Webスカウター

    スカウター : YuO's weblog @ JUSTBLOG

  • あわせて読みたい

    あわせて読みたいブログパーツ

  • フィードメーター

    フィードメーター - YuO's weblog @ JUSTBLOG

Visual Studio

2009年11月25日 (水)

twimemo: R流・WPFアプリケーション開発 @ わんくま同盟 東京勉強会 #40

わんくま同盟 東京勉強会 #40中でのセッション,R・田中一郎さんの「R流・WPFアプリケーション開発」で知ったこと。 なぜか元ネタが@nakawankumaさんだったりする不思議。 以下,Twitterでつぶやいたログ。

2009年11月 2日 (月)

VSのセットアッププロジェクトと.NET Frameworkのバージョン

VSのセットアッププロジェクト,最初のバージョン以外に対応させる場合は,マージモジュールを変更するほかに,起動条件でのバージョン変更も必要。

同僚がはまっていたのでメモ代わりに。

2009年5月14日 (木)

別ドメインでのコードの実行

よく忘れるのでメモ。

新しいAppDomainでデリゲートを実行するには,DoCallbackメソッドを使う。引数無し,戻り値の型System.Void。

2009年5月12日 (火)

System.AddIn

System.AddInを使ったアドインに挑戦。 アドインおよび拡張機能に従って作ると,とりあえずのものは簡単にできる感じ。

問題はセットアップかなぁ。 実行時にPipelineSegments.storeとAddIns/AddIns.storeを作る関係で,ユーザーが書き込み権限をもっていないといけないのは,結構面倒かも。

2009年3月29日 (日)

テキストボックスとInt32型のバインディング

M-V-VM関係の話をよく聞くのでテスト。

TextBoxふたつはっつけて,ボタンを押すと割り算の結果をTextBlockに表示するだけの簡単なプログラム。

あれ?intを直接バインドすると,"a"とかの時に,確認するすべがない……というのは困るのでさがしていると,八巻さん@グレープシティデブサミ資料を発見。 変換は,ViewModelでやるのか。なるほど。

やってると,Windows Formsアプリケーションとも共通化したくなりますが,ICommandインターフェースがWPFのものだし,いろいろ対応していないので断念。 ここらへんだけは,WinFormsでは手で書かないといけなさそうです。 でも,WinFormsでも,M-V-VMっぽいことはできそう。

2009年2月10日 (火)

C#とWordとPowerPointと

あいも変わらずC#でWordとPowerPointをいじくっています。

さて,要求事項にWord 2000-2007対応とかあって,その中の文字列引っ張ってくるだとか,該当する箇所の背景色かえるだとか,起動中はWord閉じるなとかの要求があるわけです。

まず,Word 2000と2002 (XP)以降で,Canvasの存在の有無という違いがあります。 また,Word 2002およびそれ以前とWord 2003および以降では,各種イベントのキャンセルがC#からできるかという違いもあります。

そこで採った方法が……ラッパライブラリ。当然,各バージョン用。バージョンによってget_ItemだったりItemだったりインデクサだったり……。 さらに,object以外に共通クラスが無いので,各バージョン用にファイルごとコピペ……。


まぁ,WordとPowerPointを弄っていると,双方の考え方の違いが分かってきます。

WordはMissing.Value,つまりはNothingを多用し,ref objectな引数たくさん。インデクサの実装とかでは結構面倒なことも多いです。 それに対して,PowerPointはrefを基本的に使いません。2値にはBooleanではなくMsoTriStateを使います。

このあたりの思想の違い,いまさら整合はとれないのでしょうが……。

2009年1月15日 (木)

PowerPointのオブジェクトは基本的にSnapshot

COMを使ってPowerPointを制御するプログラムを作っているのですが,TextRangeオブジェクトを弄っていると,問題発見。

ひとつのTextRangeのインスタンスからCharactersメソッドで複数の部位のTextRangeのインスタンスを作成し,真ん中あたりのTextRangeのTextプロパティに値を設定しました。 結果,そのインスタンスより後ろのインスタンスの値がずれました (StartやCountが不正になっている)。 また,場合によっては,自インスタンスの値すらずれることが……。

結局の所,PowerPointのTextRangeは取得した時点のSnapshotということみたいです。 まぁ,±2の範囲を調べて調整するようにして,自力修正をすることで対応しましたが……。

2008年11月 4日 (火)

XNA GS 3.0

XNA Game Studio 3.0が出たということで,インストールしてみました。

で,.NET Framewok 3.5ベースなので,LINQが使えるはず。試してみました……LINQ to Object,XBox 360実機でもOKでした。どこで使うんだ……。

XNAなのにSQL Server Compact実装して,LINQ to SQLが使えたら……笑うしかないですけどね。

2008年10月 3日 (金)

コードカバレッジ気にしたらコードがひん曲がった

VS 2008のテストの,コードカバレッジ機能使って,未テスト箇所を作らないようにしていったのですが……。

Enum testValue = null;
foreach (Enum enumValue in Enum.GetValues(type))
{
    testValue = worker.DynamicInvoke(value, enumValue, testValue);
}

なんてコードで未テスト箇所が2箇所発生。 ちなみに,typeは任意のEnum型 (Enum型の引数valueに対して,GetType()で取得した),workerはLambdaExpression.Compileの結果。

コメントアウトしながら探すと,どうもforeach自体が問題っぽい。 foreachはIDisposableとか,色々中でやっているからなぁ,とか思いつつ,強制的に未テスト箇所を潰してやれとばかりに,できあがったコードが……。

Enum testValue = null;
foreach (Enum enumValue in (Enum.GetValues(type) as IEnumerable).OfType<Enum>())
{
    testValue = worker.DynamicInvoke(value, enumValue, testValue);
}

何かを間違えた気がしてなりません……。 というか,foreachの中で未テスト箇所作られても困るのですが……。

2008年9月23日 (火)

VS2008のテスト機能を試す

Visual Studio 2008のテスト機能を使ってみているのですが,なんか,普通に使う分にはNUnitとかわらないような……。 まぁ,統合されている分の優位性もあるとは思いますが,Constraint Modelが使えないのが非常に悲しい……。

統合されているとはいえ,TestDriven.NETは必須ですね。 メソッド一つの単位で,エディタ上から選択出来るのが便利です。

続きを読む "VS2008のテスト機能を試す" »