Это зависит. Если вы хотите каталог EXE, который запустил приложение, то подойдет любой из ваших двух примеров. Однако помните, что .NET очень гибок, и может случиться так, что другое приложение связалось с вашим EXE-файлом и вызывает его, возможно, из другого каталога.
Это случается не очень часто, и вы, вероятно, написали бы, если бы это произошло, но это возможно. Из-за этого я предпочитаю указывать, какая сборка мне интересна, и получать каталог от этого. Затем я знаю, что все библиотеки DLL находятся в том же каталоге, что и эта конкретная сборка. Например, если у вас есть приложение MyApp.exe с классом в нем MyApp.MyClass, то вы сделаете это;
string root = string.Empty;
Assembly ass = Assembly.GetAssembly( typeof( MyApp.MyClass ) );
if ( ass != null )
{
root = ass.Location;
}