0

DLL をパスからリンクする C# Visual Studio で相対参照を作成する方法を知っている人はいますwindows\assembly\GACか?
私の問題は、私のコンピューターでは DLL が にあるGAC_MSIL\somePath\myDll.dllのに、別のコンピューターではGAC\somePath\myDll.dll. 私のGACフォルダへのパスを見つけてそれを
参照する参照(例:)を書くことは可能ですか?%GAC%\somePath\myDll.dll

4

2 に答える 2

2

あなたはそれを参照するだけで、それだけです。参照を追加すると、アセンブリ名、バージョン、公開キー トークン (厳密な名前のアセンブリの場合) を含む完全なアセンブリ名が記憶されます。実行時にアプリケーションがそのアセンブリを読み込もうとすると、ローダーは最初に GAC をチェックし、一致が見つかった場合は GAC から読み込みます。GAC からアセンブリが見つからない場合は、さらに先に進みます (プライベート ビン フォルダーの検索など)。詳細については、次を参照してください。

http://msdn.microsoft.com/en-us/library/yx7xezcf(v=vs.71).aspx

于 2013-07-03T13:50:41.247 に答える
1

プロジェクト参照に DLL を追加するだけです。プログラムは、ユーザーの GAC から適切な DLL を自動的に使用します。これこそまさに GAC (Global Application Cache) の目的です。

ユーザーのマシンに DLL が見つからない場合は、最初に GAC にインストールする必要があります。これを行う方法の例を次に示します (Excel DLL の場合)。

System.EnterpriseServices.Internal.Publish p = new System.EnterpriseServices.Internal.Publish();
FolderBrowserDialog fb = new FolderBrowserDialog();
fb.ShowDialog();
string pathToDll = fb.SelectedPath;
string excel = t + @"\" + "Microsoft.Office.Interop.Excel.dll";

if (!File.Exists(excel))
{

    using (FileStream fs = new FileStream(excel, FileMode.CreateNew))
    {
        fs.Write(Properties.Resources.microsoft_office_interop_excel_11, 0, Properties.Resources.microsoft_office_interop_excel_11.Length);
        fs.Close();
    }
 }

 Console.WriteLine("Register GAC...");
 p.GacInstall(excel);

この例では、DLL はアプリケーション リソースであり、最初にディスクに書き込まれ、次に GAC に登録されます。

于 2013-07-03T13:36:30.180 に答える