当我正在处理它时,我的应用程序的位置是硬编码的:
public static string MYPROGRAM_PATH = "/path/to/my/workspace";
显然,一旦我打包并分发我的应用程序,这将无效。如何跟踪其安装位置?
我主要关注的是linux打包(特别是.deb's),但我打算将它作为练习来学习Windows和Mac包装,所以欢迎所有提示。
答案 0 :(得分:1)
有许多方法可以确定.NET中的安装/运行位置
Environment.CurrentDirectory
将获取当前的工作目录。
如果您已将应用程序安装到Program Files中的特定位置,则可以使用:
Environment.SpecialFolder.ProgramFiles;
我几乎肯定有很多其他方法可以找出当前的运行路径。
就Linux而言,我假设这将在Mono下运行?如果是这样,我不确定他们是如何处理特殊文件夹的。
享受!
答案 1 :(得分:1)
如果你想要程序的.exe的路径,至少在微软的.NET中是System.Reflection.Assembly.GetExecutingAssembly().Location
(或Path.GetDirectoryName(...)
,如果你想要目录)
我相信这是自2.0或之前的.NET,所以Mono应该在这里兼容(刚刚检查过,它至少包含在Mono文档中。)
答案 2 :(得分:1)
如果您打算将软件打包到deb(或rpm)软件包中,为什么不将软件包安装在/ usr / bin中,或者如果您对此不满意,请将其安装在在/ usr / local / bin目录。然后,您不必播放20个关于程序所在位置的问题。请查看“hier”的手册页,了解有关文件系统上应安装文件的位置的更多详细信息。