find我的应用程序的可执行文件在WPF(C#或vb.net)的位置?
我怎样才能find我的应用程序的可执行文件在WPF(C#或VB.Net)的位置?
我用这个代码与Windows窗体:
Application.ExecutablePath.ToString(); 但与WPF我从Visual Studio收到这个错误:
System.Window.Application不包含ExecutablePath的定义。
  System.Reflection.Assembly.GetExecutingAssembly().Location应该工作。 
几个select:
 Directory.GetParent(Assembly.GetExecutingAssembly().Location) System.AppDomain.CurrentDomain.BaseDirectory 
只在VB中:
 My.Application.Info.DirectoryPath 
如果代码位于库中,执行程序集可以是DLL:
 var executingAssembly = Assembly.GetExecutingAssembly(); //MyLibrary.dll var callingAssembly = Assembly.GetCallingAssembly(); //MyLibrary.dll var entryAssembly = Assembly.GetEntryAssembly(); //WpfApp.exe or MyLibrary.dll 
所以我发现的最好的方法是(C#):
 var wpfAssembly = (AppDomain.CurrentDomain .GetAssemblies() .Where(item => item.EntryPoint != null) .Select(item => new {item, applicationType = item.GetType(item.GetName().Name + ".App", false)}) .Where(a => a.applicationType != null && typeof(System.Windows.Application) .IsAssignableFrom(a.applicationType)) .Select(a => a.item)) .FirstOrDefault(); 
所以在你的情况下,你可以find程序集的位置:
 var location = wpfAssembly.Location; 
这对你有用:Application.ExecutablePath等于:
 Process.GetCurrentProcess().MainModule.FileName; 
基于其他答案,下面是一个示例,显示如何从path中删除可执行文件名称,并将结果与一些子文件夹和文件名相结合:
在Hotspotizer( http://github.com/birbilis/Hotspotizer )的更新版本中,我刚刚在启动时添加了对加载手势集合文件的支持(如果在Library \ Default.hsjson中find的话),请使用以下代码:
 const string GESTURE_COLLECTION_LIBRARY_PATH = "Library" const string DEFAULT_GESTURE_COLLECTION = "Default.hsjson" //... LoadGestureCollection( Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), GESTURE_COLLECTION_LIBRARY_PATH, DEFAULT_GESTURE_COLLECTION));