4

我真的为我正在编写的简单单元测试而头晕目眩!

[TestFixture]
Class A
{

  [TestMethod]
  public void test()
  {
      Assembly.GetExecutingAssembly().Location // gives some temporary local path
  }

 }

我想要的只是获取程序集位置(我的项目文件夹所在的位置)的路径,而不是某个本地或临时文件夹。

如果我放一个断点,这个文件夹就是我得到的:\AppData\Local\Temp\

任何帮助是极大的赞赏!

编辑:我尝试使用 nUnit 和 MSTest microsoft 的单元测试来执行此操作!没有什么帮助。

4

4 回答 4

1

下面的代码将起作用。

Path.GetDirectoryName(new System.Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath)
于 2020-09-16T10:16:17.877 回答
0

你试过了吗

AppDomain.CurrentDomain.BaseDirectory   
于 2013-07-17T19:28:20.937 回答
0

如果GetExecutingAssembly()不是您期望的可执行文件,为什么不在您想要的程序集中使用已知类型。

typeof(A).Assembly.Location;
于 2020-08-28T02:39:27.810 回答
0

对于 ASP.Net,它不起作用。我在Why AppDomain.CurrentDomain.BaseDirectory not contains "bin" in asp.net app? . 它适用于 Win 应用程序和 ASP.Net Web 应用程序。

public string ApplicationPath
{
    get
    {
        if (String.IsNullOrEmpty(AppDomain.CurrentDomain.RelativeSearchPath))
        {
            return AppDomain.CurrentDomain.BaseDirectory; //exe folder for WinForms, Consoles, Windows Services
        }
        else
        {
            return AppDomain.CurrentDomain.RelativeSearchPath; //bin folder for Web Apps 
        }
    }
}
于 2020-08-28T02:32:17.187 回答