1

フォーラムを検索しましたが、上記の質問に対する回答がたくさんあります。ただし、私の場合は、ソフトウェアのプラグインから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」でない場合でも、ソフトウェアは壊れました。私はコーディングの経験があまりないという事実を考えると、一般的にそのようなものに対処する方法についていくつかのアドバイスを聞くのは素晴らしいことです。

4

0 に答える 0