我需要使用 c# 在 GAC 中安装程序集。下面是我的代码:
new System.EnterpriseServices.Internal.Publish().GacInstall("MyAssembly.dll");
上面的代码给出了错误:
需要绝对路径
但我需要在不使用静态文件路径(绝对路径)的情况下运行它。谁能告诉我这是否可能?我在项目引用中添加了对程序集的引用。我需要在 GAC 中安装这个程序集。
我需要使用 c# 在 GAC 中安装程序集。下面是我的代码:
new System.EnterpriseServices.Internal.Publish().GacInstall("MyAssembly.dll");
上面的代码给出了错误:
需要绝对路径
但我需要在不使用静态文件路径(绝对路径)的情况下运行它。谁能告诉我这是否可能?我在项目引用中添加了对程序集的引用。我需要在 GAC 中安装这个程序集。
您可以执行以下操作:
GacInstall((new System.IO.FileInfo("MyAssembly.dll")).FullName);
或者,
GacInstall(System.IO.Path.GetFullPath("MyAssembly.dll"));
假设该文件位于您当前的工作目录中。如果不是,那么您需要定义用于查找此 DLL 的规则(例如,它与您当前的可执行文件在同一路径中吗?)
试试我想出的下面这个,让我知道这是否有效
Assembly assembly = Assembly.GetAssembly(typeof(Program));//Replace your Type here.
string filePath = assembly.Location;
然后使用这个文件路径。
如果您知道关于您的可执行文件的相对路径,请制作DLL
string executableDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string assemblyFullPath = Path.Combine(executableDirectory,
relativePathToAssembly);
应该为你工作。
错误本身表明,您需要提供所驻留的 dll 的完整位置路径。即路径中的 C:\myprojects\myassembly.dll
在 c# 中将“.dll”文件添加到全局程序集缓存中的简单步骤: