Visual Studio で TypeScript ファイル名を変更した場合の注意

TypeScript でゴリゴリしてます。

Visual Studio でファイル名を Model.ts -> Entities.ts に変更しました。
てっきり 生成される JavaScript のファイル名も変更されると思ったのですが。。
f:id:kaji_3:20121128034236p:plain

変わらない。Visual Studio からではファイル名の変更もできません。
現在のプラグインでは対応していないようなので暫定対応をメモ。

環境

対応

プロジェクトファイルの変更

プロジェクトファイルを直に直します。
ファイル名で検索すればわかると思いますが以下のように変更します。

  • 変更前
    <TypeScriptCompile Include="Scripts\Sites\Common\Entities.ts" />
    <Content Include="Scripts\Sites\Common\Models.js">
      <DependentUpon>Entities.ts</DependentUpon>
    </Content>
  • 変更後
    <TypeScriptCompile Include="Scripts\Sites\Common\Entities.ts" />
    <Content Include="Scripts\Sites\Common\Entities.js">
      <DependentUpon>Entities.ts</DependentUpon>
    </Content>

バージョン管理の変更(TFSの場合)

Visual Studio 上で Renameしなかったためソース管理下にありません。
ソース管理エクスプローラーで「Model.js」の名前を変更をします。

以上

過渡期だからやらないと行けないけど、きっと直してくれるはず。
Issueにも登録しておきました。
TypeScript - View Issue #498: Rename a Typescript file in VS2012. but linked JavaScript not renamed

TypeScript をプロジェクトビルド時にコンパイルする MSBuild 設定

※保存時にコンパイルする方法はこちらTypeScript を保存時にコンパイルする - kaji_3's blog
knockout.js で利用する ViewModelをTypeScriptで作ろうとしてます。しかし ASP.NET MVC プロジェクトにTypeScriptのファイルを追加して内容を変更しても、JavaScriptファイルにコンパイルしてくれません。Web Essentialの設定で保存時にコンパイルするようにしてもだめでした。
なので、ビルド後にコンパイルするように仕込みます。

環境

設定

TypeScriptプラグインをインストールするとTypeScriptを利用したHTMLプロジェクトを作成できます。このプロジェクトではTypeScriptファイルは変更後、ビルドするとTypeScriptがコンパイルされJavaScriptファイルが作成されます。

プロジェクトファイルを参照すると、BeforeBuild が設定されていました。

  • TypeScriptHTMLApp1.csproj
  <PropertyGroup Condition="'$(Configuration)' == 'Debug'">
    <TypeScriptSourceMap> --sourcemap</TypeScriptSourceMap>
  </PropertyGroup>
  <Target Name="BeforeBuild">
    <Message Text="Compiling TypeScript files" />
    <Message Text="Executing tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
    <Exec Command="tsc$(TypeScriptSourceMap) @(TypeScriptCompile ->'&quot;%(fullpath)&quot;', ' ')" />
  </Target>

ここがビルド時にTypeScriptファイルに対し tsc を実行する設定です。
これを ASP.NET MVC のプロジェクトファイル の以下の場所と置換します。

  <PropertyGroup>
    <PreBuildEvent>
    </PreBuildEvent>
  </PropertyGroup>
  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
  <Target Name="BeforeBuild">
  </Target>
  <Target Name="AfterBuild">
  </Target> -->

これでオッケー。
ASP.NET MVC アプリケーションビルド時にTypeScriptファイルがコンパイルされます。

TypeScript プラグインのバージョンが上がれば改善されそうですがまずはこれで。

C# 配列を比較する方法

byte や string やら以外に比較する場面が多い配列。
配列比較用のメソッドがあります。
Enumerable.SequenceEqual(TSource) Method (IEnumerable(TSource), IEnumerable(TSource)) (System.Linq)

こんな感じに使います。

var a1 = new int[] { 1, 2, 3};
var a2 = new int[] { 1, 2, 3};
var a3 = new int[] { 1, 2, 4};
var x = a1.SequenceEqual(a2); // true
var y = a1.SequenceEqual(a3); // false

Team Foundation Server Branching and Merging Guideに沿った分岐(ブランチ)を作成するツール #tfsug

はじめに

TFSを利用したブランチ計画についてのベストプラクティスがまとまった Visual Studio Team Foundation Server Branching and Merging Guide というのがあります。

このプランチ計画に沿ったフォルダ構成+分岐の作成をしてくれるツールが ALM Rangers(かっこええなぁ)から公開されました。

Quick Response Sample – Visual Studio Extension to support the ALM Rangers Branching and Merging guidance - Visual Studio ALM + Team Foundation Server Blog - Site Home - MSDN Blogs

セットアップ

環境

手順

拡張機能、プロジェクトテンプレート等を作成するための Visual Studio 2012 が必要です。未インストールの方は以下のリンクからダウンロードしてインストールしてください。
Microsoft Visual Studio 2012 SDK extension

  • 2.Command line utility and VSExtension to implement consistent branching model のダウンロード

「Command line utility and VSExtension to implement consistent branching model _ TfsBranchTool _ 20121122.zip」を以下のリンクからダウンロードしてください。
Supporting Guidance and Whitepapers - Download: Quick Response Sample Solutions

  • 3.ダウンロードファイルを解凍

フォルダ名をそのまま解答先のフォルダ名にするとファイルパスが長すぎるとしてエラーになるので注意

  • 4.「BranchTool.sln」をVisual Studio 2012 で Release ビルド

エラーが発生しますが、拡張機能「TfsBranchToolVSExtension」以外のプロジェクトなので無視してください。
(エラーの原因は Fakes がないとか、TFS client object model 2012 がないとかだと思ってますが未検証)

  • 5.「TfsBranchToolVSExtension\bin\Release」フォルダの下の「TfsBranchToolVSExtension.vsix」をインストール
  • 6. Visual Studio 2012 を再起動

使い方

  • 1.ソース管理エクスプローラーを開く
  • 2.分岐作成対象チームプロジェクトで右クリック

「分岐とマージ」の上の「ALM Rangers Branching tooling」から「Apply initial structure」をクリックします。
f:id:kaji_3:20121124072416p:plain

  • 3.ブランチ計画を選択

どんなブランチ計画にするかは、ブランチガイドを参照してください。今回は、Basic を選択します。また、分岐作成の「RootFolder」はチームプロジェクトの直下を入力し「Apply」ボタンをクリックします。
f:id:kaji_3:20121124072759p:plain

  • 4.分岐の作成とチェックイン

フォルダ作成+チェックインが実行されます。
f:id:kaji_3:20121124073711p:plain
作成結果は以下の通り。
f:id:kaji_3:20121124073637p:plain
できました!

所感

ビルドの手間を考えると、自分で分岐を作った方がいい気がします。。ただ、その選択したプランに基づいてマージができるとうれしい。Basic Plan なら、Dev -> Main へマージ。Main -> Releaseの分岐作成がコンテキストメニューから出来るとほんとにうれしい。
というのを英語で書いてフィードバックしますw

Oracle Data Provider for .NET (ODP.NET) の Entity Framework 対応状況

Oracle Database を .NET で利用する時、Oracle Data Access Component 同梱の ODP.NET を使ってます。そんな ODP.NET の Entity Framework の対応状況を度々調べるのでまとめてみました。

履歴

2012/11/23 新規作成

情報源

.NET 開発者用サイト

Oracle | .NET Developer Center
以前に利用したものから何かリリースされていないかチェックします。

日本語サイト(.NET Developer Center)もありますが本家サイトとは同期が取れていないので注意。

Oracle Data Access Component の Download サイト

Oracle .NET Software Downloads

Entity Framework 対応 バージョン

最新版を利用すればいいと思いますが環境の制限がある場合はそうもいかないと思うので旧バージョンについても書いておきます。
リリースの履歴については 64-bit Oracle Data Access Components (ODAC) for Windows 参照。

ODAC 11.2 Release 4 and Oracle Developer Tools for Visual Studio (11.2.0.3.0)

Data Sheet: ODAC 11.2 Release 4 (11.2.0.3.0) (PDF)
同梱の Oracle Data Provider for .NET 4 11.2.0.3.0 から Entity Framework に対応しています。ただし、Oracle Developer Tools for Visual Studio 11.2.0.3.0 は Visual Studio 2010 対応。

ODAC 11.2 Release 5 and Oracle Developer Tools for Visual Studio (11.2.0.3.20)

Release 4 との違いは Oracle Developer Tools for Visual Studio 11.2.0.3.20 にバージョンアップして Visual Studio 2012 、.NET Framework 4.5 に対応していること。Oracle Data Provider for .NET は 4 11.2.0.3.0 のままです。

Oracle Data Provider for .NET, Managed Driver Beta 11.2.0.3.50

Download はこちら(http://www.oracle.com/technetwork/database/windows/downloads/odpmbeta-1696432.html)から。
Betaです! Release Note はありませんが Release 内容は以下のページにあります。
ODP.NET Managed Driver Install Guide, Quick Start, and Release Notes

バージョンアップに伴う Entity Framework に関する内容は「ENTITY FRAMEWORK RELATED TIPS, LIMITATIONS AND KNOWN ISSUES」にまとまってますが、以下の記述があります。

4. ODP.NET does not support Code First or the DbContext APIs.

このバージョンでも対応していません。
ODP.NET の設計思想なのかわかりませんが対応する気はなさそうですね。。

Entity Framework の Migration をリセットする

Entity Framework の Code First を利用しています。
Model の変更点を Migration でDBに反映する訳ですが、Migration の数が多いと落ち着きません。
ということで、Migration をすべて削除して最新のModelで削除する手順を調べたのでメモ。

環境

既存Migrationの削除

既にプロジェクトに存在している「Migration」フォルダ配下のファイルをすべて削除します。

Migration の実行結果を保存しているテーブルの削除

システムテーブルとして作成されている「__MigrationHistory」にMigration の履歴は保存されています。
Migration を反映しているDBに以下のSQLを実行します。

drop table  __MigrationHistory 

DBの全テーブルを削除します。

Visual Studio 2012 の SQL Server エクスプローラーなどを利用してMigration で作成されたテーブルをすべて削除します。

Migration の強制初期設定

対象プロジェクトのパッケージコンソールから以下のコマンドを実行し Migration 開始直後の状態にします。

PM> Enable-Migrations -Force

初期Migration の作成

初期 Migration として「Initial」を作成します。対象プロジェクトのパッケージコンソールから以下のコマンドを実行します。

PM> Add-Migration Initial

DBへの反映

対象プロジェクトのパッケージコンソールから以下のコマンドを実行します。

PM> Update-Database

以上

「TF30042: データベースがいっぱいです。Team Foundation Server の管理者に連絡してください。」が発生してしまったら

リポジトリ管理する容量をチェックしていなかった、うっかり大きいファイルをチェックインしてしまった場合、
恐怖の「TF30042: データベースがいっぱいです。Team Foundation Server の管理者に連絡してください。」が発生します。

発生時から時間も経ったし、そうそう発生させる方はいないと思いますが念のため記録を。。

最初に

まず、焦らない。もちついてください。

発生する現象

  • 自動ビルド実行できない
  • ソース管理からダウンロードできない

新規にワークスペースを作成する行為もデータベースに値を保存する事になるらしくできなくなります。

私がやった回避方法

よくない回避方法です。

自動ビルドを設定していたので最新のソースは、TFSをホストしているサーバの C:\Build配下にあったのでそれを新規チームプロジェクトを作成し、チェックインしました。

今冷静に考えるとやるべきだったこと

SQL Server なんだからデータをエクスポートしてインポートすればよかったのではないかと思います。
データ移行の手順もありますし。
異なるサーバーまたはインスタンスへのデータの復元

誰が他にやらかしたら方がいたら事例共有していただきたいなぁ。。(チラチラ