There are no cases when a hard-coded file path, absolute or relative, can be useful. Exclusions can be made for purely experimental parts of the code, during development only. Get rid of paths and the problem will go.
What I can see is: you are trying to use the directory where your executable program is. Trying to hard-code it will never help. What you need is to calculate the location of a main executable module of your entry assembly. This is how:
string exeLocation = System.Reflection.Assembly.GetEntryAssembly().Location;
string exeDirectory = System.IO.Path.GetDirectoryName(exeLocation);
This way if very universal, tolerant to the way the application is hosted and all other detail. There are other methods which are not that accurate.
Another alternative is using resources embedded in an executable file, such as *.resx resources.
—SA