gpt4 book ai didi

c# - 获取基本目录的更好方法?

转载 作者:IT王子 更新时间:2023-10-29 04:41:06 24 4
gpt4 key购买 nike

我有这段代码可以加载配置文件并读取所有值,它在运行应用程序时运行良好,但在 team city 上当然会失败,因为应用程序域的基本目录是构建脚本 (psake) 的启动位置。我知道我可以在执行测试之前将目录更改为构建目录,但我认为最好让加载配置文件始终正常工作。

XDocument.Load(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, cfgFile));

是否有另一种方法来获取真正始终有效的“BaseDirectory”?我也尝试了以下方法,结果相同:

string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
XDocument.Load(Path.Combine(path, cfgFile));

EDIT 1 问题如下。我的解决方案基目录是“C:\Project”,所有编译的文件都复制到“C:\Project\build”。现在在 psake 构建脚本中我有以下代码:

task Test -depends PrepareTests {
try {
#$old = pwd
#cd $build_dir
&$mspec $mspec_projects --teamcity
#cd $old
}
catch {
&echo "Error starting test runner"
Exit 1;
}
}

如您所见,我注释掉了目录更改,这使得 BaseDirectory 成为构建文件/解决方案的位置,而不是构建目录,无论我如何尝试访问它。如果你问我,我会有点困惑。

更新 我真的很想知道是否可以获取程序集的目录,而不管启动应用程序域的应用程序位于哪个目录。怎么办?

最佳答案

获取基本目录的不同方法

  1. AppDomain.CurrentDomain.BaseDirectory

  2. Directory.GetCurrentDirectory()//不保证在移动应用程序上工作

  3. Environment.CurrentDirectory//这会调用 Directory.GetCurrentDirectory()

  4. this.GetType().Assembly.Location//Assembly.location

  5. Application.StartupPath//适用于 Windows 窗体应用

  6. Application.ExecutablePath//与 Application.StartupPath

    相同

关于c# - 获取基本目录的更好方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3163495/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com