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