以编程方式将程序集安装到GAC中

时间:2012-09-12 07:07:15

标签: c# .net exception-handling gac

我需要使用c#在GAC中安装程序集。以下是我的代码:

new System.EnterpriseServices.Internal.Publish().GacInstall("MyAssembly.dll");

上面的代码给出了错误:

  

需要绝对路径

但我需要在不使用静态文件路径(绝对路径)的情况下运行。谁能告诉我它是否可能?我在项目引用中添加了对程序集的引用。我需要在GAC中安装此程序集。

5 个答案:

答案 0 :(得分:12)

您可以执行以下操作:

GacInstall((new System.IO.FileInfo("MyAssembly.dll")).FullName);

,或者

GacInstall(System.IO.Path.GetFullPath("MyAssembly.dll"));

假设该文件位于您当前的工作目录中。如果不是,那么您需要定义用于查找此DLL的规则(例如,它是否与您当前的可执行文件位于同一路径中?)

答案 1 :(得分:2)

尝试下面这篇文章我想出来,让我知道这是否有效

Assembly assembly = Assembly.GetAssembly(typeof(Program));//Replace your Type here.
string filePath = assembly.Location; 

然后使用此文件路径。

答案 2 :(得分:1)

如果您知道DLL关于执行的相对路径,请

string executableDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyFullPath = Path.Combine(executableDirectory,
                            relativePathToAssembly);

应该为你工作。

答案 3 :(得分:0)

错误本身表明,您需要提供dll驻留的完整位置路径。即路径中的C:\ myprojects \ myassembly.dll

答案 4 :(得分:-3)

在c#:

中将“.dll”文件添加到全局程序集缓存中的简单步骤
  1. 在您的项目中,“添加引用”到您要在GAC中安装的.dll文件
  2. 形成参考文献,右键单击特定的.dll文件,然后选择“属性”
  3. 将属性“Copy Local”更改为“True”
  4. 使用wspBuilder构建和部署
  5. 要进行验证,只需检查清单文件中是否存在路径以及“C:\ Windows \ assembly”。