我有一个类库,其中使用了一些在其自己目录中找到的xml文件。
当从另一个项目引用此库时,如何确保该库从自己的目录中工作?
我尝试过Assembly.GetExecutingAssembly().Location,但仍然返回启动项目的路径。
我有一个类库,其中使用了一些在其自己目录中找到的xml文件。
当从另一个项目引用此库时,如何确保该库从自己的目录中工作?
我尝试过Assembly.GetExecutingAssembly().Location,但仍然返回启动项目的路径。
我知道这是一篇旧帖子,但如果有人通过搜索偶然看到它,我发现最简单的方法是:
Public Class Foo
Public Shared Function GetMyPath() As String
Return Path.GetDirectoryName(GetType(Foo).Assembly.Location)
End Function
End Class
这是因为你的启动项目有两种选项可以加载库:
因此,你有两个选择:
我认为你只有在新的AppDomain中启动它,但这会带来更多麻烦。最好将它所需的文件复制到你自己的项目中,并将它们放在相对于你的工作目录的位置。
(你可能还想问原始开发人员为什么不能将所需文件的路径作为参数给出。这是解决此问题的正常方式。)
我相信有一些函数可以从ExecutingAssembly中获取已加载程序集的列表,循环遍历该列表以查找您的组件(类库),然后获取其位置。对于含糊的答案,我感到抱歉。
GetExecutingAssembly
并且你没有使用库的“本地副本”吗? - Heinzi