« 2010年3月 | トップページ | 2010年5月 »

2010年4月

2010年4月25日 (日)

VS2010の自動生成ソース

PowerShellの拡張コマンドレットを作成してみようとしているのですが、自動生成ソースが表示されたときになんとなく「なんか違う?」と思ってVS2008と比較してみたところ、やっぱり違ってました。
気がついたのは「Implements IDisposable」とした場合です。
ちょっと長いですが、ソースは以下の通り。
○VS2008 -------------------------------------------------------------------------------------------
Imports System.Management.Automation
Imports System.Diagnostics

<Cmdlet(VerbsLifecycle.Stop, "Hoge")> _
Public Class Hoge
    Inherits Cmdlet
    Implements IDisposable

    Protected Overrides Sub ProcessRecord()
        MyBase.ProcessRecord()
    End Sub
    Private disposedValue As Boolean = False        ' 重複する呼び出しを検出するには
    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: 他の状態を解放します (マネージ オブジェクト)。
            End If
            ' TODO: ユーザー独自の状態を解放します (アンマネージ オブジェクト)。
            ' TODO: 大きなフィールドを null に設定します。
        End If
        Me.disposedValue = True
    End Sub
#Region " IDisposable Support "
    ' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
    Public Sub Dispose() Implements IDisposable.Dispose
        ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
#End Region
End Class
○VS2010 -------------------------------------------------------------------------------------------
Imports System.Management.Automation
Imports System.Diagnostics
<Cmdlet(VerbsLifecycle.Stop, "Hoge")>
Public Class Hoge
    Inherits Cmdlet
    Implements IDisposable
    Protected Overrides Sub ProcessRecord()
        MyBase.ProcessRecord()
    End Sub
#Region "IDisposable Support"
    Private disposedValue As Boolean ' 重複する呼び出しを検出するには
    ' IDisposable
    Protected Overridable Sub Dispose(ByVal disposing As Boolean)
        If Not Me.disposedValue Then
            If disposing Then
                ' TODO: マネージ状態を破棄します (マネージ オブジェクト)。
            End If
            ' TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。
            ' TODO: 大きなフィールドを null に設定します。
        End If
        Me.disposedValue = True
    End Sub
    ' TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。
    'Protected Overrides Sub Finalize()
    '    ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
    '    Dispose(False)
    '    MyBase.Finalize()
    'End Sub
    ' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。
    Public Sub Dispose() Implements IDisposable.Dispose
        ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。
        Dispose(True)
        GC.SuppressFinalize(Me)
    End Sub
#End Region
End Class
Regionの範囲とかも変更されているのですが、大きな違いはアンマネージリソースを解放するためのロジック[Finalize()部分]がコメント状態で生成されること。
マネージリソースのみを使用する場合はこのままでよいですし、アンマネージリソースを使用するときにはコメント解除してリソース解放処理を追加するだけになるようです。
仕事でたまにWin32API関連の処理を書きます(.netではなくnative C++です(T_T))が、こんな処理を書こうとすると、前はMSDNのサンプルソースをコピーして使っていましたので、ちょっと嬉しい発見です。

2010年4月21日 (水)

VS2010 Download

今日からMSDNでVisual Studio 2010とかがDownloadできますね。
今日は早く帰る人多いのかな?爆笑
え~、Vusla Studio 2008のアンインストールがとっても大変なんですけど。
あ、SideBySide OKだからアンインストールしなくてもいいんでしたっけ。
会社のPCを人柱にしてしまえ<`~´>

2010年4月13日 (火)

Visual Studio 2010 発売日&価格

4/12にローンチされたのでMSDNを探していたんですが、日本語版はまだのようです。[2010/04/13 16:30時点]
<追加 Date=2010/04/13 19:20>
MSDN提供は4/20でした。
</追加>
正式な発売日と参考価格が掲載されていたのでメモ。
えっと、個人的にはTFS2010の価格が気になっていたのですが、
TFS2010 新規パッケージ:68,000円
はいい感じなのですが、
CALが68,000円(@_@;)
え~、ちょっと考えさせて下さい。(-_-;)

2010年4月 6日 (火)

SCVMMでのバーチャルマシン移動

SCVMMが使えると、仮想環境の運用は相当楽ですねぇ。
Hyper-Vホスト同士での移動でも、SCVMMがなければ
 エクスポート→ファイルコピー→インポート→仮想ネットワークの変更
という感じですが、SCVMMがあると、バーチャルマシン一覧内から移動先ホストにドラッグするだけでBITS(バックグラウンド インテリジェント転送サービス)での移動(SCVMMの表記としては「移行」)が実行できます。
ところが、
 ・移行元と移行先の仮想ネットワーク名が異なる
 ・移行先ホストにバーチャルマシン格納先が複数存在する(D:\Hyper-VとE:\Hyper-Vとか)
という状態で、ドラッグによる移行を行うと
 ・仮想ネットワークに接続されない
 ・移行先ホストの「配置」プロパティの先頭に指定されているパスに移行される
という動作になります。
仮想ネットワークは再指定するだけなのですが、格納フォルダが異なる場合、同一マシン内で移行させてもBITSでの移動となってしまい、無駄な時間がかかります。
一発できれいに移行させたい場合には、ドラッグではなく、バーチャルマシンを右クリックし「移行」を選択します。
すると、バーチャルマシンの移行ウィザードが起動され、
 ・移行先ホスト
 ・格納パスの選択
 ・ネットワークの選択
が事前に指定できます。
ドラッグでもウィザード起動してほしいですね。

VMConnectのショートカットキー

最近、いろいろな環境を作るのにHyper-Vを使っています。
ただ、サーバへリモートデスクトップ接続した状態でHyper-Vマネージャーから仮想マシンに接続したときに、統合サービスがインストールされていないとマウスが仮想マシンのウィンドウにキャプチャされ、ショートカットキーを押さないと抜け出せません。(Windows Server 2008 R2とWindows 7はOSセットアップ時から統合サービスが組み込まれている状態なので、この事象は発生しません)
昔使用していたVirtualServer2005だと、デフォルトがAltキーでしたが、Hyper-V(VMConnect)ではAlt+Ctrl+←キーに変更されています。
普通はこの組み合わせで問題ないのですが、会社の環境(ノートPCにディスプレイをつけてマルチディスプレイ状態。OSはWindows7でHyper-Vマネージャーをインストール)でこのショートカットキーを使用すると・・・
画面が回転するぅ~~~~~(@_@;)
PS2キーボード+PS2マウス→USB変換コネクタを使用しているのでそのせいかもしれませんが、ノートPCのキーボードでもなったような・・・。
ちなみに、対策はShiftキーをまぜて「Alt+Ctrl+Shift+←」とすると問題なく使えます。

« 2010年3月 | トップページ | 2010年5月 »

無料ブログはココログ