我有一个类库,它使用在自己的目录中找到的一些xml文件。
从其他项目引用此库时,如何确保库在其自己的目录中工作?
我尝试了Assembly.GetExecutingAssembly()。位置,但仍然返回启动项目的路径。
答案 0 :(得分:14)
我知道这是一个老帖子,但是如果其他人在搜索中偶然发现它,我发现这样做最简单的方法是:
Public Class Foo
Public Shared Function GetMyPath() As String
Return Path.GetDirectoryName(GetType(Foo).Assembly.Location)
End Function
End Class
答案 1 :(得分:6)
这种情况正在发生,因为您的启动项目有两个选项来加载库
所以你有两个选择:
答案 2 :(得分:0)
除非你在一个新的AppDomain中启动它,否则我认为你无法做到,这比它的价值更麻烦。只需将所需文件复制到您自己的项目中,并将它们放在相对于您的工作目录的预期位置。
(您可能还想问原始开发人员为什么不能将所需文件的路径作为参数给出。这将是解决此问题的常用方法。)
答案 3 :(得分:0)
我确信有一些函数可以从ExecutingAssembly获取加载的程序集列表,循环遍历这个函数以找到汇编(类lib)然后获取它的位置。抱歉模糊的回答。