Visual Studio 2013でセットアッププロジェクトをビルドする。
この頃お仕事でも本格的にVisual Studio 2013を使うようになってきた(遅!!)んだけれど、以前Visual Studioのセットアッププロジェクトを使ってセットアップを作っていたプロジェクトをロードするとセットアッププロジェクトが非推奨となりセットアップのビルドができなくなってしまった。
InfoQの記事「Visual Studioのセットアッププロジェクトが復活」を参照すると、Visual SutdioギャラリーでMicrosoft Visual Studio Installer Projectsをダウンロードしてインストールするか、「拡張機能と更新プログラム」からセットアップができるらしい。というかできた。
OraOps12.dllが見つからないと思ったら、MSVCR100.dllがなかった
Oracleに接続するWebサーバーを改めて構築しているわけですが、Oracleクライアントを入れるのもめんどくさい。ただ、これまでのしがらみがあってマネージドドライバーが使えないため、インスタントクライアントを利用することにしました。
いざデプロイしたサイトを実行すると、OraOps12.dllがないエラーでしばらくはまったのでメモ。
ODACをダウンロード
現在の最新版をOTNからダウンロード(現在は12.1.0.2.1)して、C:\install\odacあたりに解凍します。
http://www.oracle.com/us/products/tools/index-090165.html
インスタントクライアントのセットアップ
解凍したODACのフォルダーに移動して、allでinstant Clientをセットアップします。
cd C:\install\odac
install.bat all c:\oracle myorahome true
環境変数の設定
必要な環境変数を設定します。NLS_LANGは環境に合わせて。
環境変数名 | 設定値 | 備考 | |
1 | PATH | c:\oracle/bin;c:\oracle | binを先にする? |
2 | NLS_LANG | JAPANESE_JAPAN.JA16SJISTILDE | 必要な場合 |
動作確認
Webアプリケーションをデプロイして動かしたらこうなった。
System.TypeInitializationException: ‘Oracle.DataAccess.Client.OracleConnection’ のタイプ初期化子が例外をスローしました。
—> System.DllNotFoundException: DLL ‘OraOps12.dll’ を読み込めません:指定されたモジュールが見つかりません。 (HRESULT からの例外:0x8007007E)
場所 Oracle.DataAccess.Client.OpsInit.CheckVersionCompatibility(String version)
場所 Oracle.DataAccess.Client.OracleInit.Initialize()
場所 Oracle.DataAccess.Client.OracleConnection..cctor()— 内部例外スタック トレースの終わり —
場所 Oracle.DataAccess.Client.OracleConnection..ctor(String connectionString)
場所 LoginProcess.Load(String domain)
場所 Login.Page_Load(Object sender, EventArgs e)
場所 System.Web.UI.Control.LoadRecursive()
場所 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)()
調査中
しょうがないのでConsoleApplicationでDUAL表を検索するおなじみのサンプルを作る。ん?
コンピューターに MSVCR100.dll がないため、プログラムを開始できません。この問題を解決するには、プログラムを再インストールしてみてください。
Microsoft Visual C++ 2010 再頒布可能パッケージ (x64)のインストール
ダウンロードセンターからダウンロードしてインストールします。
http://www.microsoft.com/ja-jp/download/details.aspx?id=14632
無事動きました。