Alternative to Application.StartupPath
-
Surely, that returns the location of the executing assembly? :-D
TopicStarter wrote:
Is there a c# way to get the directory of the class and not the class that calls it?"
Bastard Programmer from Hell :suss:
-
Yes, but 'the class' surely refers to the current class, which will be in the executing assembly. That's how I read it, anyway.
-
I have a class that gets it's startup path using the following:
String myPath = Application.StartupPath;
This worked fine with it's own test form, but once I was referring to this class from another class in a different directory, it returns the wrong directory. Is there a c# way to get the directory of the class and not the class that calls it? Thanks for any help!
To clarify: main program is in directory A main program uses sub-program in directory B I need to get the directory of B programatically. Wouldn't anything referring to executing assembly refer to the location of main program in directory A? Since I am referring to program B in program A, the dll or exe is copied to program A's directory, so getting that location would return program A's location, not program B. I have a file I need to use/get in dir B. A->B and B is trying to open a file in it's directory but I'm getting the location of A because A is the application startup path (and executing assembly,no?). Sorry for the confusion! I hope that this makes it more clear!
-
Yes, but 'the class' surely refers to the current class, which will be in the executing assembly. That's how I read it, anyway.
-
To clarify: main program is in directory A main program uses sub-program in directory B I need to get the directory of B programatically. Wouldn't anything referring to executing assembly refer to the location of main program in directory A? Since I am referring to program B in program A, the dll or exe is copied to program A's directory, so getting that location would return program A's location, not program B. I have a file I need to use/get in dir B. A->B and B is trying to open a file in it's directory but I'm getting the location of A because A is the application startup path (and executing assembly,no?). Sorry for the confusion! I hope that this makes it more clear!
Is directory of the B is relative to the A's directory then you can calculate the path for B's directory get the App path and then add directories or remove directories depending on the B's location... Assuming that B's directory does not change with respect to A's Happy Coding :)
-
To clarify: main program is in directory A main program uses sub-program in directory B I need to get the directory of B programatically. Wouldn't anything referring to executing assembly refer to the location of main program in directory A? Since I am referring to program B in program A, the dll or exe is copied to program A's directory, so getting that location would return program A's location, not program B. I have a file I need to use/get in dir B. A->B and B is trying to open a file in it's directory but I'm getting the location of A because A is the application startup path (and executing assembly,no?). Sorry for the confusion! I hope that this makes it more clear!
As I pointed out earlier this command returns the path of the executable program. It does not matter where the various components used to build that executable are stored.
-
Is directory of the B is relative to the A's directory then you can calculate the path for B's directory get the App path and then add directories or remove directories depending on the B's location... Assuming that B's directory does not change with respect to A's Happy Coding :)
-
As I pointed out earlier this command returns the path of the executable program. It does not matter where the various components used to build that executable are stored.
-
But B's exe file is referenced by program A, so A copies the exe file to A's Debug directory. So getting the exe location would return A's dir and not B's.
Exactly, and that is why it does not work. When you start an executable program Windows makes a note of its location and it is that location that will be returned. Program A can only ever find program A's directory. Maybe if you explain what problem you are actually trying to solve people will be able to give some better suggestions.
-
I have a class that gets it's startup path using the following:
String myPath = Application.StartupPath;
This worked fine with it's own test form, but once I was referring to this class from another class in a different directory, it returns the wrong directory. Is there a c# way to get the directory of the class and not the class that calls it? Thanks for any help!
Hi guys. I'm going to call this since I decided what I'm going to do. For anyone looking at this post in the future, this is what I figured out. I'm new to c# programming (3 months experience), so this is my first program (in this language and with visual studio). Apparently, once this is released, all of the executables will be put in the same directory as the calling application directory, so the debug subdirectories will be gone. So I need to put my file referenced by B into A's directory. Thanks for all the help!! :) :^) Have a great Memorial Day weekend and enjoy!
-
Exactly, and that is why it does not work. When you start an executable program Windows makes a note of its location and it is that location that will be returned. Program A can only ever find program A's directory. Maybe if you explain what problem you are actually trying to solve people will be able to give some better suggestions.