경로가 하드 코딩 된 외부 프로그램을 실행하는 대신 현재 Project Dir을 얻고 싶습니다. 사용자 지정 작업의 프로세스를 사용하여 외부 프로그램을 호출하고 있습니다.
어떻게해야합니까? AppDomain.CurrentDomain.BaseDirectory는 VS 2008의 위치를 알려줍니다.
답변
이 두 가지 방법 중 하나를 시도 할 수 있습니다.
string startupPath = System.IO.Directory.GetCurrentDirectory();
string startupPath = Environment.CurrentDirectory;
말해봐, 어느 쪽이 더 나아 보인다
답변
using System;
using System.IO;
// This will get the current WORKING directory (i.e. \bin\Debug)
string workingDirectory = Environment.CurrentDirectory;
// or: Directory.GetCurrentDirectory() gives the same result
// This will get the current PROJECT directory
string projectDirectory = Directory.GetParent(workingDirectory).Parent.FullName;
답변
프로젝트가 IIS Express에서 실행중인 경우 프로젝트가 Environment.CurrentDirectory
있는 위치가 아니라 IIS Express가있는 위치 (기본 경로는 C : \ Program Files (x86) \ IIS Express )를 가리킬 수 있습니다.
이것은 아마도 다양한 종류의 프로젝트에 가장 적합한 디렉토리 경로 일 것입니다.
AppDomain.CurrentDomain.BaseDirectory
이것이 MSDN 정의입니다.
어셈블리 확인자가 어셈블리를 검사하는 데 사용하는 기본 디렉터리를 가져옵니다.
답변
또한 현재 실행중인 디렉토리에서 두 레벨을 탐색하여 프로젝트 디렉토리를 제공합니다 (모든 빌드에 대해 프로젝트 디렉토리를 반환하지는 않지만 가장 일반적입니다).
System.IO.Path.GetFullPath(@"..\..\")
물론 이것을 일종의 유효성 검사 / 오류 처리 논리 안에 포함하고 싶을 것입니다.
답변
솔루션이있는 디렉토리가 무엇인지 아는 경우 다음을 수행해야합니다.
var parent = Directory.GetParent(Directory.GetCurrentDirectory()).Parent;
if (parent != null)
{
var directoryInfo = parent.Parent;
string startDirectory = null;
if (directoryInfo != null)
{
startDirectory = directoryInfo.FullName;
}
if (startDirectory != null)
{ /*Do whatever you want "startDirectory" variable*/}
}
GetCurrrentDirectory()
method 만 사용 하면 디버깅 또는 릴리스 여부에 관계없이 빌드 폴더가 생성됩니다. 도움이 되었기를 바랍니다. 유효성 검사를 잊어 버린 경우 다음과 같습니다.
var startDirectory = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.Parent.FullName;
답변
나도 이것을 찾고 있었다. HWC를 실행하는 프로젝트가 있는데 웹 사이트를 앱 트리 외부에 유지하고 싶지만 디버그 (또는 릴리스) 디렉토리에 유지하고 싶지 않습니다. FWIW에서 허용되는 솔루션 (및이 솔루션도)은 실행 파일이 실행중인 디렉토리 만 식별합니다.
그 디렉토리를 찾기 위해
string startupPath = System.IO.Path.GetFullPath(".\\").
답변
Gucu112의 답변을 기반으로 하지만 .NET Core Console / Window 응용 프로그램의 경우 다음과 같아야합니다.
string projectDir =
Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"..\..\.."));
xUnit 프로젝트에서 .NET Core Window Application을 사용하고 있습니다.