get path for my .exe
如何获取.exe路径,因为如果复制.exe,可以获取新路径?
1
| System.Reflection.Assembly.GetEntryAssembly().Location; |
- 我只想要路径,但我看到这个命令给了我exe的路径+文件名。:-(另一方面,getEntryAssembly()。location给出了带有"file://"的路径-我需要的是AppDomain.CurrentDomain.BaseDirectory。
- 这在单元测试项目中不起作用。GetEntryAssembly()为空。
- system.reflection.assembly.getExecutingAssembly().location返回正在执行的程序集当前所在的位置,该位置在不执行时可能是或不是程序集所在的位置。在卷影复制程序集的情况下,您将获得临时目录中的路径。system.reflection.assembly.getExecutingAssembly().codeBase将返回程序集的"permanant"路径。
- @用户799821可以使用directory.getcurrentdirectory()获取当前工作目录。
- .CodeBase优于.Location。如果您使用的是Web应用程序,那么.Location将把您带到.NET临时文件目录,在该目录中复制您的文件。如果您想知道存储文件的实际位置,那么.CodeBase是更好的选择,而且我,也可能是OP实际在寻找什么。@赛勒斯是对的,我认为这不应该得到这么多的赞成票。
- @用户799821只需使用Path.GetDirectoryName获取没有文件名的文件夹。
- @谢谢,这正是我需要的。完全解决方案对我有效:System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().CodeBase)。
- 这给了您一个带有文件名的路径,但是:new FileInfo(System.Reflection.Assembly.GetEntryAssembly().Location).DirectoryName给了您一个路径!
此外:
1 2
| AppDomain.CurrentDomain.BaseDirectory
Assembly.GetEntryAssembly().Location |
- appdomain.currentdomain.basedirectory在单元测试项目中工作。
- 江户十一〔八〕为我工作。第一个文件有file;\ ,第二个文件提供执行.exe的绝对文件路径。添加System.IO.Path.GetDirectoryName()仅获取路径
在Windows窗体项目中:
对于完整路径(包括文件名):string exePath = Application.ExecutablePath;。仅用于路径:string appPath = Application.StartupPath;
- 如果在exe快捷方式中设置了application.startuppath,或者进程是从其他应用程序启动的,则它将受"工作目录"的影响。
在VisualStudio 2008中,可以使用以下代码:
1 2 3 4
| var _assembly = System.Reflection.Assembly
.GetExecutingAssembly().GetName().CodeBase;
var _path = System.IO.Path.GetDirectoryName(_assembly) ; |
- 回答不太正确。它会给你一个类似"file://foo"的字符串
- 同样,它最终也会在System.IO.Path.GetDirectoryName中引发争论。