如何为不同的配置管理器更改程序联盟的相对路径?

时间:2018-01-22 06:48:46

标签: c#

我目前正在使用相对路径访问文件,请参阅下面的代码段。

var filePath = @"..\..\..\..\..\..\..\..\Common\Data";

当我使用ANYCPU构建项目时,它工作正常,但是当我将配置管理器更改为x64x86时,无法找到该文件,因为在bin文件夹中{{1创建文件夹,以便找不到该文件。但是,添加额外的点它可以正常工作。请参阅以下代码段。

x64/x86

是否可以提供解决方案,如何在var filePath = @"..\..\..\..\..\..\..\..\..\Common\Data"; 中以编程方式x64/x86检测配置管理器?

2 个答案:

答案 0 :(得分:1)

在这种情况下,您应该考虑将硬编码路径移动到配置文件中。例如 在app.configweb.config

中添加以下设置
<appSettings>
    ...
    <add key="DataFilePath" value="..\..\..\..\..\..\..\..\Common\Data" />
    ...
</appSettings>

然后在代码中加载设置:

var filePath = System.Configuration.ConfigurationManager.AppSettings["DataFilePath"];

这种方法的好处是,它使您可以灵活地在应用程序构建后更改设置。您可以使用Web.config Transformation Syntax为每个构建配置定义特定设置。 (虽然示例使用web.config,但此工具实际上也适用于app.config

答案 1 :(得分:1)

您可以使用AppDomain.CurrentDomain.BaseDirectory,如下所示:

var filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "relativePath");