0

サードパーティの API を使用して、一部のデータ取得ハードウェア (DAQmx ドライバーを搭載した National Instruments ハードウェア) にアクセスしています。そのために、ドライバー dll への参照を追加します。

ドライバーがインストールされているマシンでコードを実行しても問題ありません。しかし、ドライバーのないマシンで実行するとSystem.IO.FileNotFoundException、try/catch でキャッチできないエラーが発生します。

API コードを実行する前に、dll が使用可能であり、そのタイプを使用できるかどうかを確認するにはどうすればよいですか。すべてのマシンがこの種のデータ取得ハードウェアをサポートしているわけではない (したがって、ドライバーがインストールされている) わけではないため、これは重要です。

よくわかりませんが、ドライバーがインストールされているマシンのGACにdllが登録されていると思います。

4

1 に答える 1

0

次のようなことをしたいと思うでしょう。アセンブリが存在する場合は true/false を返すように変更するだけです。(ここから撮影)

static void Main(string[] args)
    {
        AssemblyLoader("System.Xml, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", false);
        AssemblyLoader("System.Xml", false);
        AssemblyLoader("System.Drawing", true);
    }

    public static void AssemblyLoader(string LoadedAssemblyName, bool PartialName)
    {
        try
        {
            Assembly LoadedAssembly;
            Console.WriteLine("| Loading Assembly {0}", LoadedAssemblyName);
            if(PartialName == true)
                LoadedAssembly = Assembly.LoadWithPartialName(LoadedAssemblyName);
            else
                LoadedAssembly = Assembly.Load(LoadedAssemblyName);

            Console.WriteLine("Full Name: {0}", LoadedAssembly.FullName);
            Console.WriteLine("Location: {0}", LoadedAssembly.Location);
            Console.WriteLine("Code Base: {0}", LoadedAssembly.CodeBase);
            Console.WriteLine("Escaped Code Base: {0}", LoadedAssembly.EscapedCodeBase);
            Console.WriteLine("Loaded from GAC: {0}", LoadedAssembly.GlobalAssemblyCache);
        } catch(FileNotFoundException) {
            Console.WriteLine("EXCEPTION: Cannot load assembly.");
        }
    }
于 2010-02-23T18:10:09.097 に答える