首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取ClickOnce应用程序文件夹路径

如何获取ClickOnce应用程序文件夹路径
EN

Stack Overflow用户
提问于 2010-03-02 04:57:58
回答 3查看 241K关注 0票数 168

我需要在控制台ClickOnce .application (可执行文件)所在的同一文件夹中写入一个文件。从中启动它的文件夹。

我尝试使用Application.StartupPath & Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),但路径指向c:\Documents & Settings下的一个子文件夹。如何获取.application所在的路径?

EN

回答 3

Stack Overflow用户

发布于 2012-02-23 05:31:56

要找到文件夹位置,您可以只运行应用程序,打开任务管理器(CTRL-SHIFT-ESC),选择应用程序,然后右键单击|打开文件位置。

票数 276
EN

Stack Overflow用户

发布于 2014-11-23 06:13:38

我使用Assembly.GetExecutingAssembly().Location获取.Net 4.5.1中ClickOnce部署的应用程序的路径。

但是,无论部署方法是什么(xcopy、ClickOnce、InstallShield等),都不应该写入应用程序部署到的任何文件夹,因为这些通常对应用程序是只读的,特别是在较新的Windows版本和服务器环境中。

应用程序必须始终写入为此类用途保留的文件夹。您可以从Environment.SpecialFolder枚举开始获取所需的文件夹。MSDN页面解释了每个文件夹的用途:http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx

即,对于数据、日志和其他文件,可以使用ApplicationData (漫游)、LocalApplicationData (本地)或CommonApplicationData。对于临时文件,请使用Path.GetTempPathPath.GetTempFileName

上述方法也适用于服务器和台式机。

编辑:在主可执行文件中调用Assembly.GetExecutingAssembly()

票数 16
EN

Stack Overflow用户

发布于 2019-07-31 00:27:29

假设问题是关于在ClickOnce之后访问应用程序文件夹中的文件(真正的== System.Deployment.ApplicationDeploy.IsNetworkDeployed)应用程序安装在用户的PC上,有三种方法可以通过应用程序本身获取该文件夹:

代码语言:javascript
复制
String path1 = System.AppDomain.CurrentDomain.BaseDirectory;
String path2 = System.IO.Directory.GetCurrentDirectory();    
String path3 = System.Reflection.Assembly.GetExecutingAssembly().CodeBase; //Remove the last path component, the executing assembly itself.

它们可以在VS和部署/安装的ClickedOnce应用程序中工作,不需要“真正的== System.Deployment.ApplicationDeploy.IsNetworkDeployed”检查“。ClickOnce拾取Visual Studio2017项目中包含的任何文件,因此应用程序可以使用应用程序中的相对路径访问任何和所有已部署的文件。

它基于Windows 10和Visual Studio 2017

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2359026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档