如何获取当前正在执行的DLL的位置? 2号

时间:2013-02-03 20:39:32

标签: c# plugins dll .net-assembly absolute-path

我搜索了论坛,并且存在很多关于上述问题的答案。 但是,在我的情况下,我从一个软件的插件引用一个DLL。这似乎使情况变得更加复杂,我找到的解决方案都没有返回正确的位置。

我尝试了以下内容:

Print(AppDomain.CurrentDomain.BaseDirectory); // returns C:\Program Files\TheOtherSoftware\System\
System.Type MyDLLsNameType = null;
Assembly a = System.Reflection.Assembly.GetExecutingAssembly();
foreach (AssemblyName an in a.GetReferencedAssemblies() )
{
  Print(an.Name); // finds various names including MyDLLsName
  Print(an.CodeBase);  // this is null
  if (an.Name == "MyDLLsName"){
    MyDLLsNameType = an.GetType();
  }
}
Print(System.Reflection.Assembly.GetAssembly(MyDLLsNameType).Location); // this returns  "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.dll"

作为旁注: 我想这样做是因为我想摆脱需要用户在特定位置安装软件的各种绝对路径。当根驱动器未命名为“C”时,软件甚至会崩溃。鉴于我在编码方面没有太多经验,因此听听一些关于如何处理类似问题的建议会很棒。

0 个答案:

没有答案