redwarrior’s diary

C#, ASP.NET, WEB, G*などの雑多な情報

.NET

C#でExcelファイルを扱うライブラリごとのファイルクローズ方法(EPPlus、NPOI)

C#(ASP.NET MVC)でExcelファイルを扱う方法を調べていて、EPPlusが良さそうだったので簡単なプログラムを作成して動作を確認した。しばらく経って実際に使用する時になって、ファイル形式が .xls であることが判明。 EPPlusでは .xls のファイルは読み込め…

TFS 2015のXAMLビルドでNuGetの復元を行わない設定をしたらビルドが超速く終わるようになった

メモ:TFS 2017は、NuGetサーバーをローカルで建てることが出来るらしいので、そちらを使った方がディスク容量の節約になると思いますし、そちらを使いましょう。 TFS 2015から新しいビルド方式が用意されて、TFS 2017もリリースされ、今後あまり使われなく…

IIS上で動くASP.NET (MVC)アプリケーションの権限について

ASP.NET MVC アプリケーションを別サーバーにデプロイして動作確認しようとしたが、DBやフォルダへのアクセス権限でエラーが発生しました。以前に設定したのが少し前で、やり方を忘れていたのと、IIS上でASP.NET MVC アプリケーションの権限について理解があ…

(小ネタ).NET Frameworkの本体と、targeting packは別物

タイトルからして、何当たり前のことを言っているんだ感が全開ですが、今後同じ間違いをしないように書いておきます。 開発環境とネットワークでつながっていない環境に、ASP.NET MVC 5 アプリケーションをデプロイする必要がありました。 デプロイの「発行…

AutoMapper は使わない!

ASP.NET MVC で開発をしている時に気になってくるのが、Entity Framework で作成したエンティティと画面で使用するモデル(ViewModel)の詰め替えをどうするかということ。 少しググってみると、AutoMapper を使用すると良いと出てくる。プロパティを一つず…

(小ネタ)C#でデフォルト引数に今日の日付や現在時刻を指定する

ちょっと前ですが、以下の記事を読みました。あわせて読みたいの記事も読みましたが、どれも丁寧にまとめられていて良い内容でした。 techlife.cookpad.com 日付を渡すには、Rubyではデフォルト引数で行うのが簡単と書かれていたので、これをC#でやってみよ…

TFS 2015でプロジェクトを.NET Framework 4.6にダウングレードしてビルドする

前振り 前回の記事で.NET Framework 4.6.1を使用してビルドが出来るようになったので、次にテスト環境を用意しようと思いました。 redwarrior.hateblo.jp いきなりTFS上からテスト環境へデプロイをするのは大変そうなので、まずはローカルマシンからデプロイ…

TFS 2015で.NET Framework 4.6.1のプロジェクトをビルドする

新プロジェクトが開発に入るにあたって、どうせならばTFSでビルド出来るようにして、ゆくゆくはプルリクエストがマージされたらテスト環境にデプロイされるようにしたい。 またVisual Studio 2015で開発するのだから、.NET Frameworkも4.6.1を使い、作成する…

Unity で AOP

ASP.NET MVC 5.2.3 で Unity 4.0.1 を使用して、AOPでログ出力やってみた

(小ネタ)2重ループをLINQを使って書く

コレクションが二つあって、片方のコレクションの値で、もう片方のコレクションを検索して処理を行う時に、2重ループを使うことがありますが、これはLINQを使用して書くことも出来ます。 C#で解説する「データ処理の直交化と汎用化」 − @IT ただしサイト内…

(小ネタ)改行文字を削除する

ささいな事ですが、うっかり引っかかったのでまとめておきます。 C#で文字列に含まれている改行文字を取り除く方法は、改行文字を含む位置によって違います。 末尾にある場合 TrimEndメソッドに改行文字を渡します。環境に依存しないようにCRとLFを両方とも…

Visual Studio 2015は、Professionalでもユニットテスト機能(MSTest)が充実している

Visual Studio 2015になって、Professionalエディションでもユニットテストが便利になったと実感したので忘れずに書いておく。 便利だと思ったのは以下の2つ。 テスト対象クラスのメソッドから、テストクラス/メソッドを作成する テスト対象クラスのメソッ…

(小ネタ)EqualsメソッドもGetHashCodeメソッドもReSharperで!

ReSharperカテゴリの2つ前と操作がほとんど一緒ですが、機能紹介ということで。 csファイル(クラス)を開いて、メニューのRESHARPER→Edit→Generate Codeと選択し(もしくはクラス内にカーソルを合わせて「Alt」を押しながら「Insert」を押す)、 出てきたメ…

(小ネタ)C#のユニットテストで public でないメソッドをテストする方法(MSTest)

Javaでは、publicでないメソッド(かつ、privateでもない)をテストする場合は、packageを一緒にすれば良かったのですが、C#ではどうやるんだろうと思って調べました。 参照先の通りにやったら出来たので、特に追記することはありません。 ソースコード単位…

(小ネタ)C#でメソッドの引数に値渡しが行われるのは、値型のみ

自作クラスなどの参照型の引数に ref とか out とかつけるのは意味がなく、m9(^Д^)プギャーされるのでやめた方が良いですね。 自作の構造体や列挙型は値型なので、参照渡しが必要ならばつけましょう。

LINQを使用したメソッドの共通化の試行錯誤

LINQを使用して、DBから取得したデータでDTOを構築するメソッドを作成していると、インターフェイスは違うのに処理の流れがほぼ同じになる事ってありませんか? どういうことかと言うと、片方の処理では、単純なLINQを使用しているのでIQueryable<T>を返します</t>…

ClickOnceアプリケーションをコマンドライン(MSBuild)から発行する方法

ClickOnceアプリケーションをコマンドラインもしくはPowerShellから、MSBuildを使用して発行する方法がわかったので、忘備録としてまとめておく。 MSDNと@ITで必要な情報は足ります。 MSDN ClickOnce のセキュリティと配置 MSBuild ClickOnce アプリケーショ…

ClickOnceアプリケーションをMSBuildで発行しようとしたらエラー発生(したけど解決した)

ClickOnceアプリケーションをMSBuildを使用して発行しようとしたら、エラーに遭遇したのでメモを残しておきます。 エラーメッセージは、以下の通りです(見辛いので改行しています) C:\windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targ…

Visual Studioを使用したテスト駆動開発ブートキャンプ(TDDBC)に参加しました

2015/9/2にマイクロソフトセミナーを品川のマイクロソフト社で受けてきました。タイトルの通り、和田卓人(id:t-wada)さんは日本のTDD(テスト駆動開発)の第一人者であり、とても勉強になりました。 著名人の話を無料で聞けるとは、マイクロソフトセミナー…

(小ネタ).NETで設定ファイル(***.config)の値に半角スペースを使用する方法

.NETで設定ファイル(Web.configやApp.config)の値に半角スペースを使用したい場合がたまにあります。 代表的なのはDBの接続文字列で、AttachDbFilenameにmdfファイルのパスを指定する場合です。 コンソールアプリケーションで、SQL Server 2012 Express Lo…

(小ネタ)INotifyPropertyChangedの実装も、ReSharperはサポートしている

Windowsフォームでデータバインディングをする場合に、INotifyPropertyChangedをオブジェクトに実装する必要があるが、ReSharperを使用するとメニューから選択するだけで作成してくれる。 (どのフィールドを通知対象とするかは、フィールドごとに設定する必…

(小ネタ)ToStringメソッドもReSharperで作成してくれる!

クラスを開いて、メニューのRESHARPER→Edit→Generate Codeと選択し、出てきたメニューから「Formatting members」を選択するとプロパティを選択する画面が出てくるので、ToStringメソッドに含んでほしいプロパティを選択して、作成すると、ToStringメソッド…

(小ネタ)インターフェースのシグネチャを変更したら、実装クラスのシグネチャも変更されるReSharperならね。

タイトル以上のものは無いのですが。はは~、<m(__)m> とお辞儀をしたくなる便利さです。 やり方: interfaceソースを開いて、メソッドにカーソルを置いた状態で、メニューのRESHARPER→Refactor→Change Signatureを選択すると、メソッド名、戻り値、パラメータを編集</m(__)m>…

foreachでループのindexを取得して、さらに絞り込む

以下のサイトで、foreachでループのindexを取得する方法がのっています。 foreachでループのindexを知る方法 - かずきのBlog@hatenaokazuki.hatenablog.com これだけでも十分便利なのですが、indexを取得しながらさらに絞り込むことが出来ます。以下のサイト…

C#でJavaDoc風のAPIリファレンスを作成する方法

C#でも、Javaで言うところのJavaDocみたいなコメントの書き方があります。 ドキュメントコメントと呼ばれていて、///で始まり、paramタグとかreturnsタグとかを書くことが出来ます。 このドキュメントコメントから、APIリファレンスを作成する方法を調べたの…