我需要使用c#在GAC中安装程序集。以下是我的代码:
new System.EnterpriseServices.Internal.Publish().GacInstall("MyAssembly.dll");
上面的代码给出了错误:
需要绝对路径
但我需要在不使用静态文件路径(绝对路径)的情况下运行。谁能告诉我它是否可能?我在项目引用中添加了对程序集的引用。我需要在GAC中安装此程序集。
答案 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”文件添加到全局程序集缓存中的简单步骤