如何在Visual Studio 2017 RC3中获取C#(.net core)项目目录路径?

Che*_*149 5 c# visual-studio-2015 .net-core

我在Visual Studio 2017 RC3中有一个C#(.Net Core)解决方案,其中包含许多项目(如果您感到好奇,则为4个),并且我最近使用VS 2017 RC3从旧的project.json/visual studio 2015格式迁移.

其中一个项目是一个测试项目,我需要访问它下面的一些文件.

似乎Directory.GetCurrentDirectory()不能依赖于在测试代码中获取项目路径,因为VS 2017中的测试是从IDE的安装位置运行的 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE.

目前,我正在通过对测试项目的基本路径进行硬编码来解决这个问题.由于这不是理想的,有没有替代方法以编程方式获取VS 2017 RC3中项目的基本路径?

Mat*_*hew 14

您应该能够通过AppContext.BaseDirectory获得所需内容.这将从%projectfolder%\ bin\debug \netcoreapp1.1返回运行测试的位置.你可以做这样的事情来获得项目文件夹.

AppContext.BaseDirectory.Substring(0, AppContext.BaseDirectory.IndexOf("bin"));

你可以把它扔进帮助器或扩展方法.

  • 如果任何前面的目录中有序列“bin”,我将使用 `LastIndexOf`。 (5认同)

Sha*_*ane 5

按照马修的回答,我最终得到了这个代码(VSCode/.net-core/C#/MacOSX)来获得实际的解决方案根项目根

var appRoot = AppContext.BaseDirectory.Substring(0,AppContext.BaseDirectory.LastIndexOf("/bin"));
appRoot = appRoot.Substring(0,appRoot.LastIndexOf("/")+1);
Run Code Online (Sandbox Code Playgroud)

+1位允许您包含尾部正斜杠。