アプリケーション初回起動30秒遅延を回避する方法

アプリケーションが使用するアセンブリの有効性を確認するためにCRLのダウンロード処理を行っている。
※CRL(Certificate Revocation Lists)とは「証明書失効リスト」のこと。
インターネットに接続できない環境でアプリケーションの起動が遅くなる原因は、CRLのダウンロードができない場合にタイムアウトの発生まで待ってしまうためです。

方法① 手動で設定修正

CRLのダウンロードを実行しないようにする。
 1. [コントロール パネル] - [インターネット オプション] を実行。
 2. [インターネットのプロパティ] ダイアログで [詳細情報] タブ を選択。
 3. [発行元証明書の取り消しを確認する] のチェックボックスをオフする。

方法② アプリケーションの設定追加
.NET Framework 2.0 Service Pack 1以降では、*.exe.configに以下の行を追加することにより、アプリケーション開始時の署名検証を無効にすることができます。
 <configuration>
  <runtime>
   <generatePublisherEvidence enabled="false"/>
  </runtime>
 </configuration>

Visual Studioを常に管理者として開く

タスクバーに登録したショートカットのプロパティを弄って管理者権限で動かすようにすることはできるが、これだと最近使ったものリストを選択した場合に管理者権限にならない。
レジストリを編集すると、単にソリューションファイルを開いただけでもちゃんとVisual Studioを管理者権限として動かすことができるようになる。

場所: HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

内容: 文字列値を作成し、常に管理者権限で動かしたい実行ファイルのパスを名前とする、値には RUNASADMIN を設定する。

Visual Studio 2015の場合は次の2つを登録しておくと良い
"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe"
"C:\Program Files (x86)\Common Files\Microsoft Shared\MSEnv\VSLauncher.exe"

WCFで作成されたWebサービスからWindowsサービスを制御

Webサービスの認証ビューにてASP.NET偽装を有効にする。

Web.config上は以下となる。

<?xml version="1.0" encoding="utf-8"?>
<configuration>

    <system.web>
        <identity impersonate="true" />
    </system.web>

... ...

C#: 半角カンマ区切りのCSVファイルの読み込み

TextFieldParser parser = new TextFieldParser(strFileName, sjisEnc);

//区切り文字の設定
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");

//行がある限りループする
while (!parser.EndOfData)
{
    //1行データを配列に取得
    string[] orderFileData = parser.ReadFields();
}

//ファイルを閉じる
parser.Close();

CSVファイルの中のフィールドに、「,」を使いたい場合は、フィールドを「"」を括ればいい。

(※タブを区切り文字にすれば、フィールドに「,」が使える。)