I have a class library that uses some xml files found in its own directory.
When referencing this library from another project, how do I ensure the library is working from it's own directory?
I tried Assembly.GetExecutingAssembly().Location but that still returns the path of the startup project.
I know this is an old post but in the event someone else stumbles on it from a search, the easiest way I've found to do this is:
Public Class Foo
Public Shared Function GetMyPath() As String
Return Path.GetDirectoryName(GetType(Foo).Assembly.Location)
End Function
End Class
This is happening because your startup project has two options as to loading the library
So you have two options here:
I don't think you can unless you start it in a new AppDomain, and that's more trouble than it's worth. Just copy the files it needs into your own project, and put them in the place it expects relative to your working directory.
(You might also want to ask the original developer why the paths to the needed files can't be given as a parameter. This would be the normal way of solving this problem.)
I'm sure there is some functions to get the list of loaded assemblies from the ExecutingAssembly, loop across this to find you assemble(class lib) then get it's location. Sorry for vague answer.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.