6

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

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

上面的代码给出了错误:

需要绝对路径

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

4

5 回答 5

12

您可以执行以下操作:

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

或者,

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

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

于 2012-09-12T07:13:06.053 回答
2

试试我想出的下面这个,让我知道这是否有效

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

然后使用这个文件路径。

于 2012-09-12T07:26:23.953 回答
1

如果您知道关于您的可执行文件的相对路径,请制作DLL

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

应该为你工作。

于 2012-09-12T07:14:17.370 回答
0

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

于 2012-09-12T07:10:49.113 回答
-3

在 c# 中将“.dll”文件添加到全局程序集缓存中的简单步骤:

  1. 在您的项目中,“添加引用”到要在 GAC 中安装的 .dll 文件
  2. 形成参考,右键单击特定的 .dll 文件并选择“属性”
  3. 将属性“复制本地”更改为“真”
  4. 使用 wspBuilder 构建和部署
  5. 为了验证,只需检查清单文件是否存在路径以及“C:\Windows\assembly”。
于 2013-06-27T05:51:22.777 回答