Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

.NET

アクセサー付きのプロパティコードスニペットをVisual Studio 2008で使用する

どういうこと? Visual Studio 2010の[propfull]コードスニペットをVisual Studio 2008でも使用できるようにする方法を紹介します。 参考エントリー アクセサー付きのプロパティコードスニペットがVisual Studio 2010で復活した - プログラマーな日々 どうす…

アクセサー付きのプロパティコードスニペットがVisual Studio 2010で復活した

どういうこと? Visual Studio 2008 Visual Studio 2008で[prop]のコードスニペットを展開すると、こうなります。 理由はC#3.0で自動プロパティが実装されたからです。 これはこれで便利ですが、プロパティアクセサーに追加のロジックを書けないという欠点が…

更新エラー発生のログを出力し、残りのレコードの更新を続行する

更新エラー発生のログを出力し、残りのレコードの更新を続行するサンプルを紹介します。 サンプルではTableAdapterを使用していますが、DataAdapterを使用していれば同じように実装できます。 ソースコード // using System; // using System.Data; // using…

DataTableの内容をCSVとして出力する拡張メソッドを定義する

DataTableの内容をCSVとして出力する - プログラマーな日々DataTableの内容をCSVとして出力するサンプルです。 先日のエントリーと等価な処理を拡張メソッドで定義します。 DataTableExtension.cs using System.Data; using System.Text; namespace Extensio…

DataTableの内容をCSVとして出力する

DataTableの内容をCSVとして出力するサンプルです。 クラス using System.Data; using System.Text; namespace Models { /// <summary> /// DataTableの内容ををフィールドとして読み込む機能を提供します。 /// </summary> public class DataTableFieldReader { private DataTa…

C#でExcelファイルをPDFに変換する

C#でExcelファイルをPDFに変換するサンプルです。 検証環境 Visual Studio 2010 SP1、.NET Framework 4、Excel 2007、Office 2007 SP2 プロジェクトの作成 プロジェクトテンプレートはコンソールアプリケーションを選択します。 参照の追加 以下のスクリーン…

相互運用型 'Microsoft.Office.Interop.Excel.ApplicationClass' を埋め込むことができません。代わりに適用可能なインターフェイスを使用してください。

どういうこと? .NETからExcelを扱うときに、以下のビルドエラーが発生しました。 相互運用型 'Microsoft.Office.Interop.Excel.ApplicationClass' を埋め込むことができません。代わりに適用可能なインターフェイスを使用してください。 環境 Visual Studio…

複数のCOMオブジェクトを確実に解放する

.NETでCOMを扱う際に、複数のCOMオブジェクトを確実に解放する方法を紹介します。 どういうこと? .NETではCOMを注意深く扱う必要があります。1オブジェクトでも解放漏れがあるとCOMのプロセスが解放されずに残ってしまうからです。 どうすれば? ソースコ…

Repeaterコントロール内に配置したコントロールのイベントをハンドリングする

Repeaterコントロール内に配置したコントロールのイベントをハンドリングする際の注意点です。 ここでは例としてRepeaterコントロール内部にButtonを配置しています。 ソースコード aspx <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default…

実行中のメソッドを宣言するクラスの名前を取得する

実行中のメソッドを宣言するクラスの名前を取得する方法を紹介します。ログ出力に便利です。 ソースコード using System; using System.Reflection; namespace ConsoleApplication { class Program { static void Main(string[] args) { Console.WriteLine(M…

実行中のメソッドの名前を取得する

実行中のメソッドの名前を取得する方法を紹介します。ログ出力に便利です。 ソースコード using System; namespace ConsoleApplication { class Program { static void Main(string[] args) { Console.WriteLine(System.Reflection.MethodBase.GetCurrentMet…

パラメータ情報を付加したCommandTextを取得する拡張メソッド

パラメータ情報を付加したCommandTextを取得する拡張メソッドを定義すると便利です。 SQLをログ出力するケースで使用します。(2012/02/11 読者さんからの指摘で追記) using System; using System.Data; using System.Data.SqlClient; using System.Text; n…

コンソールアプリケーションの実行ファイルのパスを取得する

どういうこと? Windowsフォームアプリケーションの実行ファイルのパスは、System.Windows.Forms.Application.StartupPath プロパティで取得できます。 Application.StartupPath プロパティ (System.Windows.Forms)アプリケーションを開始した実行可能ファイ…

log4netのログファイル出力エラーをイベントでハンドリングする

どういうこと? log4netは内部で例外を握りつぶしているようで、アプリケーション側でtry-catchを使用してもログファイル出力エラーを補足できません。 カスタムエラーハンドラーを作成すればlog4net内で例外を補足することはできますが、そのエラーハンドラ…

SqlCommandの戻り値パラメータ追加/値取得を拡張メソッドで実装する

SqlCommandの戻り値パラメータ追加/値取得を拡張メソッドで実装してみます。 using System; using System.Data; using System.Data.SqlClient; namespace DataAccess { public static class SqlParameterCollectionExtensions { /// <summary> /// 戻り値のパラメータ</summary>…

配列の要素をカンマで連結した文字列を拡張メソッドで取得する

配列の要素をカンマで連結する拡張メソッドを定義すると、ログ出力時などに便利です。System.Arrayクラスを拡張すると全ての配列で使用することができます。 using System; namespace Extensions { public static class SystemExtensions { /// <summary> /// 配列の</summary>…

Visual Studio 11はWindows XPをサポートしません

Visual Studio 11(時期バージョン。2012年リリース予定)は、Windows 7以降 をサポートします。 XPもVistaもサポートしません。 We are sorry, the page you requested cannot be found. XPは2014年までは延長サポート期間ですが、いよいよ移行が必須になり…

コードスニペットの「ブロックの挿入」を使いこなす

どういうこと? コードスニペットの「ブロックの挿入」を使うと、選択されたソースコードを囲むようにコードスニペットを展開させることができます。 どうすれば? ソースコードを選択します。 ブロックの挿入のショートカットキーを入力します。 通常のキー…

switchのコードスニペットにEnumを読み込ませると便利!

switchのコードスニペットにEnumを読み込ませると便利です。 どういうこと? switchのコードスニペットの[switch_on]プレースホルダーにEnumを指定すると、Enumに列挙されている値がすべてソースコードに展開されます。 どうすれば? コードスニペット挿入の…

「Visual Studio 2010 用 Microsoft Silverlight 5 Tools」がリリースされています

「Visual Studio 2010 用 Microsoft Silverlight 5 Tools」がリリースされています。 開発者向け情報 - Microsoft Silverlight Silverlight 5 アプリケーションを Visual Studio 2010 上で開発するためのアドオンです。Visual Studio 2010 または Visual Stu…

WININET.DLLの外部メソッド呼び出しを使用してFTPのクライアントを実装する

どういうこと? WININET.DLLの外部メソッド呼び出しを使用してFTPのクライアントを実装します。 どうして? .NET Compact Frameworkでは、FtpWebRequestクラスやFtpWebResponseクラスが提供されていません。そのためFTPのクライアントを実装するにはWININET.…

WININET.DLLの外部メソッド呼び出しで使用されるハンドルが確実に解放されるように実装する

どういうこと? .NET Compact Frameworkでは、FtpWebRequestクラスやFtpWebResponseクラスが提供されていません。そのためWININET.DLLの外部メソッド呼び出しが必要ですが、使用されるハンドルは自動的には解放されません。IDisposableを実装したラッパーを…

テンポラリーファイルが確実に削除されるように実装する

どういうこと? テンポラリーファイルは使用後に自動的には削除されません。IDisposableを実装したラッパーを作成することで、確実に削除されるようにできます。 どうして? Disposeメソッドでテンポラリーファイルを削除するように実装すれば、using句のス…

MSDNの「ビジネス アプリケーション開発情報」

MSDNに新たなページが立ち上がってた。 ビジネス アプリケーション開発情報 Build a Better App | MSDN ・技術評価や開発実装をおこなう方に: シナリオ (Case) に基づいた開発実現方法を技術ごとに Tips としてご提供します。 ・プロジェクト管理やシステム…

WININET.DLLの外部メソッド呼び出しで使用されるハンドルのラッパークラス

どういうこと? WININET.DLLの外部メソッド呼び出しで使用されるハンドルのラッパークラスを定義します。 どうして? IDisposableをインプリメントするので、using句を使えばハンドルの解放漏れがなくなります。 どうすれば? ソースコードを記載します。 us…

IntPtrがゼロかどうかを判定する拡張メソッド

IntPtrがゼロかどうかを判定する拡張メソッドを実装します。 どうすれば? using System; namespace ThumbnailExtraction { internal static class SystemExtension { #region IntPtr /// <summary> /// ゼロかどうかを示す値を取得します。 /// </summary> /// <param name="self"><see cref="System.IntPtr"/> のインスタンス</see></param>…

VB.NET←→C#のソースコード変換サイトが便利

VB.NET←→C#のソースコード変換サイトを紹介します。 Convert VB.NET to C# - A free code conversion tool - developer FusionSimply paste in your VB.NET code below, and this free utility will automatically convert it to its equivalent in C#. ... …

jQueryのVisual Studio 2010用コードスニペット集

どうすれば? CodePlexからmsiをダウンロードします。 jQuery Code Snippets for Visual Studio 2010 - Home131 Visual Studio 2010 Code Snippets for use with jQuery msiを実行してインストールします。 Visual Studioを起動し、Webプロジェクトを作成し…

メッセージ交換パターンの検証(その1)

エントリーを2度に分けてWCFの3種類のメッセージ交換パターン(要求/応答、一方向、双方向)を検証します。 今回はWCFサービスを実装します。 WCFサービスのソースコード IService1.cs using System.ServiceModel; using Client; namespace MEPService { […

私が System.Transactions.TransactionScope クラスを使わないたった1つの理由

私は System.Transactions.TransactionScope クラスを使いません。理由はMSDTCが無効だと動かないから。 機能面でも System.Data.SqlClient.SqlTransaction クラスで十分です。TransactionScope クラスでないと実装できないのは、複数のDB接続を1つのトラン…