QA@IT

上位FrameWorkのDLLの実行

6510 PV

EXEからDLLを参照して実行する場合、DLLをExeとは別の上位バージョンのFrameWork上で実行することは可能でしょうか?
可能であればやり方も教えて頂きたいと思います。
それぞれ実行したいFrameWorkのバージョンは以下の通りです。
EXE:FrameWork 3.5
DLL:FrameWork 4.5

Webの通信をTLS1.2で行いたいのですが、FrameWork4.5以上でなければできないようなので
通信部分をDLL可できればと思って質問しました。

実行環境

形式 :Windowsアプリケーション
端末 :Windows7(32bit) FrameWorkは3.5と4.5が混在

開発環境

EXE:VisualStadio2008(VB.net)
DLL:VisualStadio2012(VB.net)

回答

利用予定というTLS1.2のライブラリも呼び出せるかはやっていないのでわかりませんが、
以下のようなVB.NET(VS2008でビルド) の WinForms プログラムから

Public Class Form1
    ' ボタンとラベルを一つずつ配置

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        ' 動的ロード
        Dim obj = Activator.CreateInstanceFrom("N45Lib.dll", "N45Lib.MyClass").Unwrap()

        Dim x As Integer = DirectCast(obj.Add(1, 2), Integer)
        Label1.Text = x.ToString()

    End Sub
End Class

コンパイルの詳細オプション
__________2015-12-12_3.25.33.png

以下のようなクラスライブラリ(VS2013でビルド)を呼び出すことは可能です。

Public Class [MyClass]
    Public Function Add(a As Integer, b As Integer) As Integer
        Return a + b
    End Function
End Class

__________2015-12-12_3.25.51.png

これには、exe.configファイルを一緒に配置する必要が有ります。

__________2015-12-12_3.34.06.png

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
</configuration>

exe.configはexe側のプロジェクトでapp.configを追加して作成しても、
ファイルを置いた後でテキストファイルとして手作成してもどちらでも構いません(今回は後者で行いました)

ご参考までに。

編集 履歴 (0)
  • 回答ありがとうございます。
    教えて頂いた方法でTLS1.2の通信も確認できました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。