修改生成的执行程序集路径c#

本文关键字:程序集 路径 执行程序 执行 修改 | 更新日期: 2023-09-27 18:14:27

我在字符串中得到我的执行程序集路径,我不想要整个路径,我需要使用它的一部分,需要从该路径访问它的另一个文件夹。

假设我需要从文件夹

中获取一个xml文件

" E:'Mahi_WorkSpace'TFS 'Atrias.WebAutomationTesting'XmlFolder"

我的执行程序集路径是

" E:'Mahi_WorkSpace'TFS 'Atrias.WebAutomationTesting'TestResults't.mahidharreddy_123 2016-10-24 07_39_26'Out"

现在我只需要从执行汇编字符串

中获取"E:'Mahi_WorkSpace'TFS 'Atrias.WebAutomationTesting' "
 public string GetStringBody()
    {
         System.CodeDom.Compiler.CompilerParameters parameters = new    CompilerParameters();
         string path=Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
//srting xmlpath=??
         return xmlpath;

    }

修改生成的执行程序集路径c#

试试这个

string path = Path.GetDirectoryName(Path.GetDirectoryName(TestContext.TestRunDirectory));

这将给你Atrias.WebAutomationTesting创建的TestResults文件夹的父目录,我相信,这就是你正在寻找的。

参考:MSDN: TestContext。TestRunDirectory地产

这只是另一个可能的解决方案:

public string GetStringBody() {
    System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
    string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
    var di = new DirectoryInfo(path);
    return di.Parent.Parent.Parent.FullName; // here you should define how many level you want to up
}

您可以遍历父目录,直到到达目标节点。

var currentDirectoryPath = AppDomain.CurrentDomain.BaseDirectory;
var parentDirectory = System.IO.Directory.GetParent(currentDirectoryPath);
while (!string.Equals(parentDirectory.Name, "Atrias.WebAutomationTesting", StringComparison.CurrentCultureIgnoreCase))
{
    parentDirectory = parentDirectory.Parent;
    if (parentDirectory == null)
        break;
}
if (parentDirectory != null)
{
    var targetDirectory = parentDirectory.FullName + "''Test";
    MessageBox.Show(targetDirectory);
}