Posts

Showing posts from 2010

WPFアプリにアニメーションGIFを表示させる

WPFには画像を表示するためのImageというコントロールがあるけれど、アニメーションGIFには対応していないらしく、1フレーム目だけが静止画として表示されてしまう。何かソリューションはないのかと探したところ、以下のようなやり方があるようだ。1. MediaElementを使う<MediaElement Source=”パス” LoadedBehavior=”Play”/> と書くと、アニメーションGIFが表示できる。ただ、GIFファイルが埋め込みリソースになっているとだめなので、プロパティをいじって「出力ディレクトリにコピー」にしておかないといけない。見つけた中では一番シンプルなソリューションだったけれど、表示までに時間がかかる、アニメーションが途中で止まる、といった問題があり、すぐには解決できなかったので、次のPictureBoxを使う方法を採用することにした。2. Windows FormsのPictureBoxを使うアニメーションGIFを設定したWindows FormsのPictureBoxをWindowsFormsHostでホストすれば、WPFの画面にアニメーションGIFを表示できる。まずXAMLでこのように書いておき、<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:wfi="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration"
    xmlns:winForms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
    Loaded="Window_Loaded" >

TFS: 別PCでのチェックアウトを取り消す

最近CodePlexにプロジェクトを作って、暇な時にコードを書いているのだが、開発に使っているPCの1つがハードディスク障害で立ち上がらなくなってしまった。それはそれで障害ないとあきらめたけれど、問題はこいつでチェックアウトしてしまっていたファイル。壊れたPCでチェックアウトしているという情報がサーバで保持されているため、なんとも具合が悪い。会社でVS2005+TFS2005を使っていた頃、コマンドラインで強制アンロックとかできたよな、と思って調べてみると、VS2010でもtfコマンドで強制アンロックができた。コマンドは
tf undo /recursive /workspace:別PCで割り当てていたワークスペース名;ドメイン名\ユーザー名 $/
これでチームプロジェクト内の全ファイルのチェックアウトが解除される。ワークスペースはVSのソース管理エクスプローラで見れるし、
tf workspaces /owner:ドメイン名\ユーザー名 /computer:*
で、どのPCでなんというワークスペースを割り当てているかわかるから、これで調べてもOK。
ちなみに、tfコマンドはVS2010のインストールフォルダ内のCommon7\IDEにある。

I'll be back to the .NET world presently

ようやく今の仕事も終わりが見えてきた。 そろそろ.NETの世界に戻ってこれる...はず。

Silverlight 機能マトリクス : Silverlight 4 ではどんなことができるようになったか

この記事はこちらに移動しました。
WPF、Silverlight 関連は、今後このサイトに投稿します。

StyleCop は更に有用なツールに進化していけるか?

2 週間ほど前のことになるが、Microsoft が StyleCop をオープンソース化することを決めたというアナウンスがあった。StyleCop is going Open Source!StyleCop は C# のソースコードを分析し、コーディングルールに違反している部分がないか検査してくれるツールである。Visual Studio の拡張機能という位置づけで、インストールすると Visual Studio のメニューからソースコードの分析を実行できるようになる。似たようなツールとして FxCop があるが、こちらはソースコードをビルドしてできた中間言語 (IL) を分析するツールなので、守備範囲が異なっている。StyleCop チームのブログによれば、ツールに対する好感と同時に、開発体制や機能についての改善要望も多かったようだ。Since StyleCop was released publicly, there has been an overwhelmingly positive response from the C# development community. [...]  At the same time, many of you have complained about the slow pace of bugfixes and updates, about limitations in the license, and about some big things like a lack of support for VB.Net.StyleCop を公開して以来、C# を使っている開発コミュニティから、圧倒的な好評を得ました。[...] 同時に、多くの利用者から、バグフィックスやアップデートの遅さ、ライセンスの制限、そして VB.NET をサポートしていないことへの不満があがっていました。僕も StyleCop を使ってみたことがあるが、いくつか不満に思う点があった。こちらからトリガーを与えないとソースコードの分析が実行されない。Eclipse + CheckStyle のように書いたそばから分析して欲しい。追加のルールを作るのが大変。あと、知人に聞いた話だけど、Visual Studio のデフォルトのコーディングスタイル (Ctrl…

Visual Studio 2010 コード分析新機能 (2) 新ルール

Visual Studio 2010 のコード分析には、次のルールが新たに追加されるそうだ。従来のコードアクセスセキュリティがデフォルト off になり、セキュリティ透過性モデルレベル 2 が導入されたので、セキュリティ関係のルールがかなりたくさん追加されている。CA1062public メソッドに渡された引数の null チェックを行うCA1303ローカライズ可能にすべき引数には文字列リテラルを指定しないCA2000Dispose 可能なオブジェクトはスコープを失う前に破棄するCA2100セキュリティ上の脆弱性の観点から SQL クエリを再確認するCA2130定数に SecurityCritical 属性を付加しないCA2131型の同値 (type equivalence) に参加する型や、そのメンバーに SecurityCritical 属性を付加しないCA2132デフォルトコンストラクタには、少なくとも基底クラスのデフォルトコンストラクタと同じセキュリティ透過属性を付加するCA2133デリゲートとバインド対象のメソッドのセキュリティ透過レベル (という言い方でいいのだろうか...) を一致させるCA2134オーバーライドメソッドのセキュリティ透過レベルは、基底クラスのものと一致させるCA2135セキュリティ透過レベル 2 のアセンブリにはリンク確認要求を含めないCA2136従来のコードアクセスセキュリティモデルとセキュリティ透過モデルとで、矛盾した属性をメンバーに付加しないCA2137セキュリティ透過なメソッドには検証可能な IL だけを含めるCA2138セキュリティ透過なメソッドから SuppressUnmanagedCodeSecurity 属性が付加されたメソッドを呼び出さないCA2139セキュリティ透過なメソッドに HandleProcessCorruptingExceptions 属性を付加しないCA2140セキュリティ透過なコードからセキュリティクリティカルな型やメソッドなどを使わないCA2141セキュリティ等価なメソッドから、リンク確認要求で保護されたメンバーを使用しない (直訳すると「セキュリティ等価なメソッドではリンク確認要求を満たさない」になるが、MSDN の説明を読む限り、この訳の方が適している気がする)CA2142セキュリティ透過なコ…

Visual Studio 2010 コード分析新機能 (1) ルールセット

Visual Studio 2010 では、ルールセットというものが追加される。これは、「このルールは有効、このルールは無効...」という設定をひとまとめにしたもの。以下のような定義済みルールセットの他、独自実装も可能らしい。Microsoft All Rules : 全ルールを含む Microsoft Basic Correctness Rules : ロジックの間違いや .NET Framework の API の使い方の間違いに関するルールを含む Microsoft Basic Design Guideline Rules : コードの理解や使い方を容易にするためのベストプラクティスを強制するためのルールを含む Microsoft Extended Correctness Rules : Microsoft Basic Correctness Rules の拡張 + COM 相互運用やモビリティに関するルールを含む Microsoft Extended Design Guideline Rules : Microsoft Basic Design Guideline Rules の拡張 + ネーミングルールを含む Microsoft Globalization Rules : グローバリゼーション関係の前ルールを含む Microsoft Minimum Recommended Rules : セキュリテ上の脆弱性やアプリケーションのクラッシュなどにつながる可能性がある、もっともクリティカルな問題を検出するためのルールを含む Microsoft Security Rules : セキュリティ関係の全ルールを含む Visual Studio 2010 にはルールセットをいじくるための、ルールセットエディタというのもくっついている (独立したアプリではなく Visual Studio 2010 の機能の一部)。Configuring and Using a Custom Rule Set全プロジェクトで同じルールセットを使うようにもできる模様。Specify Managed Code Rule Sets for Multiple Projects in a Solution