而不是运行其路径硬编码的外部程序,我想获得当前的项目目录。我正在使用自定义任务中的进程调用外部程序。
我该怎么做呢?AppDomain.CurrentDomain.BaseDirectory只是给了我VS 2008的位置。
而不是运行其路径硬编码的外部程序,我想获得当前的项目目录。我正在使用自定义任务中的进程调用外部程序。
我该怎么做呢?AppDomain.CurrentDomain.BaseDirectory只是给了我VS 2008的位置。
当前回答
如果项目在IIS express上运行,则环境。CurrentDirectory可以指向IIS Express所在的位置(默认路径是C:\Program Files (x86)\IIS Express),而不是指向项目所在的位置。
这可能是各种项目最适合的目录路径。
AppDomain.CurrentDomain.BaseDirectory
这就是MSDN的定义。
获取程序集解析器用于探测程序集的基目录。
其他回答
试试这个,很简单
HttpContext.Current.Server.MapPath("~/FolderName/");
您可以尝试这两种方法中的一种。
string startupPath = System.IO.Directory.GetCurrentDirectory();
string startupPath = Environment.CurrentDirectory;
告诉我,你觉得哪个更好
好吧,2021年,有点晚了…但我在许多项目中发现的所有可能性都让我很恼火:
bin /调试 bin / x86 -调试 bin /调试- net5 0-windows。 ...
来吧……我只需要一行程序(或几乎)来处理测试单元中的一些文件;我需要在所有过去、现在、(可能是未来)的项目中使用它。
因此,如果项目名称与它所在的相对文件夹相同:
使用程序集名称选择项目根文件夹名称; 回去找,直到找到那个名字。
代码示例:
string appName = Assembly.GetExecutingAssembly().GetName().Name;
var dir = new DirectoryInfo(Environment.CurrentDirectory);
while (dir.Name != appName) {
dir = Directory.GetParent(dir.FullName);
}
return dir.FullName;
我也遇到过类似的情况,在google搜索无果之后,我声明了一个公共字符串,它修改调试/发布路径的字符串值以获得项目路径。使用这种方法的一个好处是,因为它使用了当前项目的目录,所以不管你是从调试目录还是发布目录工作:
public string DirProject()
{
string DirDebug = System.IO.Directory.GetCurrentDirectory();
string DirProject = DirDebug;
for (int counter_slash = 0; counter_slash < 4; counter_slash++)
{
DirProject = DirProject.Substring(0, DirProject.LastIndexOf(@"\"));
}
return DirProject;
}
然后你就可以在任何你想要的时候调用它,只使用一行:
string MyProjectDir = DirProject();
这在大多数情况下都是可行的。
Try:
var pathRegex = new Regex(@"\\bin(\\x86|\\x64)?\\(Debug|Release)$", RegexOptions.Compiled);
var directory = pathRegex.Replace(Directory.GetCurrentDirectory(), String.Empty);
这是不同于其他的解决方案,也考虑到可能的x86或x64构建。