Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用DNX项目确定当前路径 目标_C#_Asp.net_Xunit_Dnx_Appveyor - Fatal编程技术网

C# 使用DNX项目确定当前路径 目标

C# 使用DNX项目确定当前路径 目标,c#,asp.net,xunit,dnx,appveyor,C#,Asp.net,Xunit,Dnx,Appveyor,对于集成测试,我希望加载自定义XML配置。此XML位于我的集成测试项目内的文件夹中 对于进一步的目标,我想使用新的DNX项目。我知道它们还在预览中 本地测试效果良好。 现在的问题是,我不能使用相对路径,因为测试系统的当前目录信息不是我项目的项目文件夹。 同样的问题也发生在验船师身上 生成代理在另一个文件夹中启动,因此相对路径信息错误并失败。 这不奇怪 我试着用这个片段来解决这个问题: public abstract class IntegrationTestBase { public s

对于集成测试,我希望加载自定义XML配置。此XML位于我的集成测试项目内的文件夹中

对于进一步的目标,我想使用新的DNX项目。我知道它们还在预览中

本地测试效果良好。 现在的问题是,我不能使用相对路径,因为测试系统的当前目录信息不是我项目的项目文件夹。 同样的问题也发生在验船师身上

生成代理在另一个文件夹中启动,因此相对路径信息错误并失败。 这不奇怪

我试着用这个片段来解决这个问题:

public abstract class IntegrationTestBase
{
    public static string CurrentPath()
    {
        string codeBase = typeof (IntegrationTestBase).Assembly.Location;
        UriBuilder uri = new UriBuilder( codeBase );
        string path = Uri.UnescapeDataString( uri.Path );
        return Path.GetDirectoryName( path );
    }
}
问题 这里的问题是:由于新的DNX运行时,它返回的不是我的项目和/或程序集的位置,而是运行时文件夹:

C:/Users/ben/.dnx/runtimes/dnx-clr-win-x86.1.0.0-rc1-update1/bin/Microsoft.Dnx.Loader.dll
如果我请求代码库或执行/调用Assembly,则会出现相同的行为

使用“旧的”简单C#项目和MsTest,我得到了预期的路径

Environment.CurrentDirectory
在AppVeyor上不起作用,因为进程未在项目文件夹中启动,然后此命令返回另一个路径(已启动项目的路径)

问题: 这里使用相对路径的正确方法是什么

环境
  • VS 2015更新1
  • DNX项目模板
  • xUnit配置
  • 测量员建造系统

在DNX项目中,您必须添加依赖项Microsoft.Extensions.PlatformAbstrations,然后才能使用
PlatformServices.Default.Application.ApplicationBasePath

或者更容易,无需额外依赖: 使用
System.AppContext.BaseDirectory

也许是因为未来的本地编译,反射内容将无法工作。 我认为
System.AppContext.BaseDirectory
是最简单的解决方案。
PlatformServices.Default.Application
继承了默认情况下注入到新ASP.NET核心应用程序中的
iaApplicationEnvironment
接口