C#获取类库的路径

djs*_*ner 5 .net c# assemblies

我有一个类库,它使用在自己的目录中找到的一些xml文件.

从其他项目引用此库时,如何确保库在其自己的目录中工作?

我尝试了Assembly.GetExecutingAssembly().位置,但仍然返回启动项目的路径.

小智 14

我知道这是一个老帖子,但是如果有其他人从搜索中发现它,我发现这样做的最简单方法是:

Public Class Foo

     Public Shared Function GetMyPath() As String
          Return Path.GetDirectoryName(GetType(Foo).Assembly.Location)
     End Function

End Class
Run Code Online (Sandbox Code Playgroud)

  • @iamserious:你认真吗? (6认同)
  • @Leif,哈哈哈,我不记得发表这个(愚蠢的)评论; 我做这个的时候很可能喝醉了. (5认同)

And*_*ena 6

发生这种情况是因为您的启动项目有两个选项来加载库

  1. 将其复制到自己的文件夹(会导致您正在尝试的行为)
  2. 从GAC加载它(什么是不可能从它的文件夹加载任何XML)

所以你有两个选择:

  1. 导入项目中的XML文件,并将它们作为"嵌入资源"嵌入到类库中,并在运行时将其加载到内存中
  2. 导入项目中的XML文件,并将文件的"复制到输出目录"属性更改为"true".