C# 查找文件';s路径

C# 查找文件';s路径,c#,visual-studio,file,path,C#,Visual Studio,File,Path,我正在开发一个C#Visual Studio应用程序,并使用config.txt文件。但是,当应用程序安装在另一台计算机上时,考虑到用户将在自定义路径(C:\Folder X)上安装应用程序,我如何找到config.txt文件路径?如果配置文件与可执行文件位于同一目录,您可以使用: string exePath = Assembly.GetExecutingAssembly().Location; string configFileName = "config.txt"; string con

我正在开发一个C#Visual Studio应用程序,并使用config.txt文件。但是,当应用程序安装在另一台计算机上时,考虑到用户将在自定义路径(C:\Folder X)上安装应用程序,我如何找到config.txt文件路径?

如果配置文件与可执行文件位于同一目录,您可以使用:

string exePath = Assembly.GetExecutingAssembly().Location;
string configFileName = "config.txt";

string configFilePath = Path.Combine(Path.GetDirectoryName(exePath), configFileName);

编辑:

getExecutionGassembly()
应该返回路径
C:\Program Files\MyAddIn\your\u plugin.dll
,因为它返回调用它的加载程序集的实际路径

事实并非如此,我们可以猜测MS Project实际上是在加载dll(路径
…\AppData\local\Assembly\…
之前将其复制到本地(可能是临时)目录中

由于我不知道MS Project为什么以及如何做到这一点,我认为处理您的问题最安全的方法是在安装时将您的加载项文件夹的位置存储到注册表中。如果你是以MSI的形式发布的,那么安装程序应该很容易添加一个包含插件文件位置的注册表项。如何做到这一点将取决于您如何构建MSI:vdproj?WiX


然后在插件的代码中,您可以读取注册表以获取路径。

您可以使用.net设置来存储此应用程序的设置,而不是使用文本文件


如果配置文件与您可以使用的应用程序位于同一文件夹中,则可以查看更多信息。位置取决于您如何安装应用程序。请提供有关如何安装应用程序的更多信息。每个人都假设该文件将包含可执行文件,而as OP没有提及任何内容。该应用程序打包在msi中,并且该文件将与其他文件(包括msi向导中用户给定路径中的exe文件)一起解包。我需要这个文件的路径来读取应用程序执行时的配置。可以修改文件内容以更改应用程序的配置。在这种情况下,以下任何答案都适用于您。这为我提供了以下路径:C:\Users\UserName\AppData\Local\Assembly\dl3….\config.txt。但文件是:C:\Program Files\Application\config。txt@yozcia看起来您是从位于可执行文件本身以外的其他位置的程序集调用代码的。尝试用
GetEntryAssembly
替换
getExecutionGassembly
,这会产生空错误:对象引用未设置为对象的实例。我的应用程序是MS PROJECT的附加组件。它所做的是每次打开MS PROJECT时读取配置文件。问题是,当我在另一个路径上安装应用程序时,我再也找不到该路径。@yozcia您没有提到您正在为现有应用程序编写附加组件
getExecutionGassembly()
返回null,因为可执行文件不是您的,而是MS Project。config.txt文件位于哪里?MS项目目录?插件目录?用户目录?感谢您对帮助我的兴趣。加载项打包在msi中,当用户安装msi时,他选择一个路径,例如C:\Program Files\MyAddIn,配置文件的路径将是C:\Program Files\MyAddIn\config.txt。现在,在安装之后,当MS Project打开时,它会读取配置文件,我需要找到这个配置文件的路径。