Archive

Archive for 2011年1月

拡張機能マネージャーとdevenv.exe.config

Visual Studio 2010に搭載されている拡張機能マネージャーは、Visual Studioの拡張機能(コード支援やらカスタムテンプレートやら)をVisual Studioギャラリーから簡単にインストールしたり、削除したりするための、拡張機能の管理するツールです。

会社の環境だとどうもうまくオンラインギャラリーを参照できずに、仕方なく何か拡張機能をインストールしたい場合は、Visual Studioギャラリー(http://visualstudiogallery.msdn.microsoft.com/)からインストールしました。

ちょっとめんどくさいなーと思い、Visual Studioの通信状況をFiddlerでHTTPの通信を見ていると、どうも417でプロキシサーバーが通信をやめてしまっているようです。

image

ということは、app.configでどうにかなるかもしれないということで、Visual Studioのapp.configを書き換えてみましょう。Visual Studioのapp.configはここにあります。

%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe.config

で、/configuration/system.netにservicePointManagerのエントリーを追加してあげます。、修正後はこんな感じ

<configuration>
  ...
  <system.net>
    <settings>
      <ipv6 enabled="true"/>
      <servicePointManager expect100Continue="false" />
    </settings>
  </system.net>
</configuration>

動きました。

image

カテゴリー:プログラミング タグ:

OracleのテーブルからVBのプロパティーを作る

かなり個人的なメモ

コメント欄に日本語名が入っていることが前提

SELECT 
       ''''''' <summary> ' || CHR(13) || 
       ''''''' ' || USER_COL_COMMENTS.COMMENTS || CHR(13) ||
       ''''''' </summary> ' || CHR(13) ||
       'Public Property ' || 
       USER_TAB_COLUMNS.COLUMN_NAME || 
       ' As ' ||
       case USER_TAB_COLUMNS.DATA_TYPE
         when 'CHAR' then 'String'
         when 'VARCHAR2' then 'String' 
         when 'NUMBER' then case when USER_TAB_COLUMNS.DATA_PRECISION is null
                              then 'Integer'
                              else 'Double'
                            end
         else 'String'
       end 
  FROM USER_TAB_COLUMNS
  JOIN USER_COL_COMMENTS
    ON USER_TAB_COLUMNS.TABLE_NAME = USER_COL_COMMENTS.TABLE_NAME
   AND USER_TAB_COLUMNS.COLUMN_NAME = USER_COL_COMMENTS.COLUMN_NAME
 WHERE USER_TAB_COLUMNS.TABLE_NAME = 'テーブル名'
 ORDER BY COLUMN_ID
カテゴリー:プログラミング, Oracle タグ:

VB.NETにMVVM LightToolkitのテンプレートを追加しよう

MVVM LightToolkitのVB用テンプレートがないと聞いたので、とりあえずViewModelのテンプレートを作ってみました。

Visual Studioのテンプレートを作るのは簡単です。

  1. もともとになるプロジェクトやファイルを作って、
  2. 置き換えようのパラメーターをソースに適用して、
  3. ウィザードからテンプレート化して、
  4. UserTemplateフォルダーに置く
  5. だけ。

ということで、やってみます。

1.テンプレートのもととなるプロジェクトを作る。

まずは、テンプレートのもととなるプロジェクトを作ります。

本来のMVVM LightToolkitのプロジェクトテンプレートから作られるプロジェクトは、アセンブリの参照以外にも、MVVM LocatorやMVVM Viewなどが最初からプロジェクトに追加されていますが、今回は単にMVVM LightToolkitのアセンブリが追加され、ViewModelが一つ追加されたものを作ります。

MVVM LightToolkitに必要なアセンブリは、次の3つです。

  • GalaSoft.MvvmLight.Extras.SL4.dll
  • GalaSoft.MvvmLight.SL4.dll
  • System.Windows.Interactivity.dll
  • Select the file to reference

テンプレートにする、ViewModelクラスを作成します。ViewModelBaseクラスを継承する以外は、特に記述するものもないのですが、C#のテンプレートにならってこんなクラスを追加してみました。C#ではクラスファイルには名前空間を含めますが、VBではアプリケーションレベルでは既定の名前空間を使うのが習わし?になっているので名前空間は定義していません。

Option Explicit On
Option Strict On
Option Infer On

Imports GalaSoft.MvvmLight

Public Class Class1
    Inherits ViewModelBase

    Public Sub New()
        'if (IsInDesignMode)
        '    ' Code runs in Blend --> create design time data.
        'Else
        '    ' Code runs "for real": Connect to service, etc...
        'End If
    End Sub

    'Public Overrides Sub Cleanup()
    '    ' Clean own resources if needed
    '    'MyBase.Cleanup()
    'End Sub
End Class

とりあえず、この状態でビルドが通ることを確認したら、テンプレートのもととなるプロジェクトの作成は終了です。

2.換えようのパラメーターをソースに適用する。

テンプレート化するアイテムは、アイテムの追加ダイアログで指定したファイル名をクラス名につけたいので、次のように修正します。

Option Explicit On
Option Strict On
Option Infer On

Imports GalaSoft.MvvmLight

Public Class $safeitemname$
    Inherits ViewModelBase

    Public Sub New()
        'if (IsInDesignMode)
        '    ' Code runs in Blend --> create design time data.
        'Else
        '    ' Code runs "for real": Connect to service, etc...
        'End If
    End Sub

    'Public Overrides Sub Cleanup()
    '    ' Clean own resources if needed
    '    'MyBase.Cleanup()
    'End Sub
End Class

クラス名をClass1から、定義済みテンプレート名である、$safeitemname$に変更しています。このほかのテンプレート名は、MSDNを参照してください。また、カスタムテンプレートを定義することもできます。

3.ウィザードでテンプレート化する。

テンプレートウィザードを開始するには、Visual Studioのファイル⇒テンプレートのエクスポートを実行します。

image

今回は、アイテムテンプレートを追加するので、ラジオボタンで項目テンプレートを選択します。

テンプレートのエクスポート ウィザード

アイテムテンプレートに含むファイルを指定します。今回は先ほど修正したMVVMViewModel.vbを選択します。

テンプレートのエクスポート ウィザード (2)

このファイルが参照するアセンブリを選択します。ここでは上記の3アセンブリを参照します。

テンプレートのエクスポート ウィザード (4)

テンプレートの情報を定義してテンプレートの作成は完了です。

テンプレートのエクスポート ウィザード (5)

4.UserTemplateフォルダーに置く

テンプレートを自動的にVisual Studioにインポートを選択すると、今回作成された項目テンプレートが、下記の場所に作成され、Visual Studioに自動登録されます。

%UserProfile%\Documents\Visual Studio 2010\My Exported Templates

 

テンプレートを適用する。

アイテムの追加ダイアログに作成したテンプレートが表示されます。

新しい項目の追加 - SilverlightApplication2

プロジェクトのテンプレートを作る。

プロジェクトテンプレートの作り方は、基本的に項目テンプレートと同じです。

テンプレートのウィザードの最初で、プロジェクトテンプレートを選択するだけです。

テンプレートの構成

Visual Studioのテンプレートファイルは単なるZipファイルです。解凍するとテンプレートの構成を書いたvstemplateファイルと、テンプレートに含まれるファイルやアイコンが解凍されます。

image

このvstemplateファイルはを修正することで、アイテム追加時のカスタム動作を追加することができます。

詳細はこちら⇒プロジェクトと項目テンプレートのカスタマイズ

カテゴリー:Silverlight タグ: ,