我目前正在使用相对路径访问文件,请参阅下面的代码段。
var filePath = @"..\..\..\..\..\..\..\..\Common\Data";
当我使用ANYCPU
构建项目时,它工作正常,但是当我将配置管理器更改为x64
或x86
时,无法找到该文件,因为在bin文件夹中{{1创建文件夹,以便找不到该文件。但是,添加额外的点它可以正常工作。请参阅以下代码段。
x64/x86
是否可以提供解决方案,如何在var filePath = @"..\..\..\..\..\..\..\..\..\Common\Data";
中以编程方式x64/x86
检测配置管理器?
答案 0 :(得分:1)
在这种情况下,您应该考虑将硬编码路径移动到配置文件中。例如
在app.config
或web.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");