none
ASP.NET MVC2 でOracle.DataAccess.dll を参照に追加したときの参照の記述先? RRS feed

  • 質問

  •  

    初めまして。

    ASP.NET MVC2から Oracle.DataAccess.dllを参照に追加した場合、

    その参照についてどこに記述されているか、またはdllのバージョンを手動で変更するにはどうすればよいか

    教えて頂けないでしょうか。

     

    具体的には、開発環境のOracle.DataAccess.dllのバージョンが Version=2.102.4.0 に対して、

    ウェブサイトの発行先のOracle.DataAccess.dllのバージョンは Version=2.102.2.20 です。

    webformで開発していた時は、参照に追加するとweb.configに記述されるので、

    そちらを加工していたのですが、MVC2では、そういった記述を見つけることができませんでした。


    【開発環境】

    Visual Basic 2008

    .NET Framework 3.5

    MVC2

     

    よろしくお願いいたします。

     

    2011年8月10日 7:09

回答

  • .vbproj に書いてあるアセンブリは開発 PC の環境を参照しないといけませんので、ここは書き換えてはいけないと思います。
    Oracle.DataAccess.dll のローカル コピーを False にしておいて、Web.config の assemblies に WebForm と同じ内容で追加してあげれば、発行先では別のアセンブリを参照させることができるはずと思いますが...。

    そんなことより、開発環境と発行先のアセンブリのバーションを合わせるのが普通だと思うのですが、それができない理由があるのでしょうか。 
    • 回答としてマーク はるこ 2011年8月12日 6:26
    2011年8月11日 5:19
  • > また、dllをbinフォルダに置くのは試していませんが(すみませ
    > ん)、そうするとOracleが動くかどうか…(動くのでしょうか)。

    マネージコードアセンブリですよね?

    Oracle は試したことはないですが、MySQL の Connector/Net その
    他今まで試した限りでは bin フォルダにアセンブリを置いて動かな
    かったことはないです。

    簡単に試せますし、もとに戻すのも簡単です。また、試したからと
    言ってどこかが壊れると言うわけでもありませんので、解決策の候
    補の一つとして一度試してみることをお勧めします。

    参考になると思われるページへのリンクを張っておきます。

    ASP.NET Web プロジェクト内の共有コード フォルダー
    http://msdn.microsoft.com/ja-jp/library/t990ks23%28v=VS.100%29.aspx

     

    • 回答としてマーク はるこ 2011年8月18日 3:02
    2011年8月12日 13:59

すべての返信

  • まずは、"Oracle.DataAccess" というキーワードでプロジェクト内を検索してみるといいと思います。

    具体的には、開発環境のOracle.DataAccess.dllのバージョンが Version=2.102.4.0 に対して、

    ウェブサイトの発行先のOracle.DataAccess.dllのバージョンは Version=2.102.2.20 です。

    webformで開発していた時は、参照に追加するとweb.configに記述されるので、

    そちらを加工していたのですが、MVC2では、そういった記述を見つけることができませんでした。


    ASP.NET MVC 2 も WebForm と同じく ASP.NET ですので、このあたりの仕組みは変わらないはずです。
    ただし、ASP.NET MVC は Web.config が 2 つありますので、ちょっと混乱するかもしれないですけれども。

    参考:
    ASP.NET MVC: Difference between web.config under Views and in Root Folder | Free Web Developer Site
    http://www.freewebdevelopersite.com/2011/06/11/asp-net-mvc-difference-between-web-config-under-views-and-in-root-folder/
    2011年8月10日 10:05
  •  

    totojoさん、ありがとうございます。

     

    Oracle.DataAccessの参照記述を、.vbprojファイルに見つけることができました!

    (web.configには、確かにwebformと変わらずassembliesセクションがありますが、こちらには記述されないようです…。)

     

    見つけることはできたのですが、ここに対して直接、Versionや, PublicKeyTokenを書き換えても、変更が反映されないのです。

    dllのバージョンが違うとのエラーが出てしまいます。

    何か良い方法がありますでしょうか。

     

     

    2011年8月11日 3:05
  •  

    正確なエラーを書いておきます。

    ファイルまたはアセンブリ 'Oracle.DataAccess, Version=2.102.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

     

    .vbprojの変更部分は以下です。

        <!-- はるこPC -->
        <!--<Reference Include="Oracle.DataAccess, Version=2.102.4.0, Culture=neutral, PublicKeyToken=89b483f429c47342, processorArchitecture=x86">-->
        <!-- WEBサーバ -->
        <Reference Include="Oracle.DataAccess, Version=10.1.0.200, Culture=neutral, PublicKeyToken=89B483F429C47342, processorArchitecture=x86">
          <SpecificVersion>False</SpecificVersion>
          <!-- はるこPC -->
          <!--<HintPath>..\..\..\..\..\..\..\Oracle\product\10.2.0\client_1\odp.net\bin\2.x\Oracle.DataAccess.dll</HintPath>-->
          <!-- WEBサーバ -->
          <HintPath>..\..\..\..\..\..\..\Oracle\product\10.1.0\Client_1\BIN\Oracle.DataAccess.dll</HintPath>
        </Reference>

     

    よろしくお願いいたします。

     

    2011年8月11日 3:25
  • .vbproj に書いてあるアセンブリは開発 PC の環境を参照しないといけませんので、ここは書き換えてはいけないと思います。
    Oracle.DataAccess.dll のローカル コピーを False にしておいて、Web.config の assemblies に WebForm と同じ内容で追加してあげれば、発行先では別のアセンブリを参照させることができるはずと思いますが...。

    そんなことより、開発環境と発行先のアセンブリのバーションを合わせるのが普通だと思うのですが、それができない理由があるのでしょうか。 
    • 回答としてマーク はるこ 2011年8月12日 6:26
    2011年8月11日 5:19
  • 直接の答えにはなっていませんが・・・

    開発環境でアプリケーションの bin フォルダにバージョン
    2.102.4.0 の dll をコピーして置いて、それに参照設定し、
    コンパイルしてアセンブリを作り、2.102.4.0 の dll と一
    緒にサーバーに配置してはいかがですか?

    そうすれば、バージョンを書き換えなくてもすみますし、開
    発環境と実環境で dll のバージョンが違うという問題も回避
    できると思います。

     

    2011年8月11日 13:28

  • totojoさん、SurferOnWwwさん、ありがとうございます。

    そうですね。まずは環境を見直すべきですよね。

    環境変数を操作すること等が面倒で、また、webformでは問題なくできていたので、

    開発環境を変えずにできる方法があるのではと思っていました。

    10.1で開発できるようにしてみます。

     

    web.configに同じように書くだけでは、認識してくれないようなのです。

    また、dllをbinフォルダに置くのは試していませんが(すみません)、そうするとOracleが動くかどうか…(動くのでしょうか)。

     

    ありがとうございました!

     

    2011年8月12日 6:26
  • > また、dllをbinフォルダに置くのは試していませんが(すみませ
    > ん)、そうするとOracleが動くかどうか…(動くのでしょうか)。

    マネージコードアセンブリですよね?

    Oracle は試したことはないですが、MySQL の Connector/Net その
    他今まで試した限りでは bin フォルダにアセンブリを置いて動かな
    かったことはないです。

    簡単に試せますし、もとに戻すのも簡単です。また、試したからと
    言ってどこかが壊れると言うわけでもありませんので、解決策の候
    補の一つとして一度試してみることをお勧めします。

    参考になると思われるページへのリンクを張っておきます。

    ASP.NET Web プロジェクト内の共有コード フォルダー
    http://msdn.microsoft.com/ja-jp/library/t990ks23%28v=VS.100%29.aspx

     

    • 回答としてマーク はるこ 2011年8月18日 3:02
    2011年8月12日 13:59
  • Webサーバー上に .vbproj を置かれていること自体、不思議に思います。

    何がソースコードで、何がWebサーバーに必要とされる出力ファイルなのか把握されていますか?

    2011年8月12日 18:46


  • ありがとうございます!

    SurferOnWwwさんの方法を試してみましたところ、

    Oracleも無事に動作しました。

    本当にありがとうございました。

     

    2011年8月18日 3:02