Windows 응용 프로그램과 asp.net 응용 프로그램 모두에서 응용 프로그램 경로 (실제)를 얻으려면 .NET에서 통일 된 방법이 있습니까 ??균일 한 방법으로 Windows 응용 프로그램과 asp.net 응용 프로그램 모두에 대한 응용 프로그램 경로를 얻으십시오.
답변
정확히 무엇을 찾고 있는지 알 수는 없지만 AppDomain.CurrentDomain.BaseDirectory
이 후보가 될 수 있습니다.
업데이트
@AZ가 지적한 바와 같이, 케이스는 내가 아니, 통일 된 방법이 없다고 말할 것입니다 그래서 결국이, 당신은 "응용 프로그램 디렉토리"를 고려 일반적 될지 반환하지 않습니다 때 거기에 그 안전하게 당신에게 기대하는 것을 줄 것입니다.
그냥 확인하고 있었는데 실제로 필요한 것입니다 – Zenuka
Windows 서비스를 개발중인 경우 속성은 c : \ windows \ service32는 svchost.exe에 의해 호스팅되기 때문에 system32입니다. 모든 경우에 작동하지는 않습니다. –
@AZ : 아니요, 완벽한 해결책은 아닙니다. 응용 프로그램이로드되는 위치가 아닌 다른 디렉토리가'BaseDirectory '가되도록 AppDomain이 응용 프로그램에서 실행되는 경우도있을 수 있습니다. –
Assembly.GetExecutingAssembly(). 위치. 항상 실행중인 dll 또는 exe의 경로를 가져옵니다 (웹 응용 프로그램의 bin 폴더에 있음). 그러면 응용 프로그램 디렉토리를 추론 할 수 있습니다.
IIS에서 실행중인 aspx 페이지에서 이렇게하면 다음과 같은 내용이 나타납니다. c : \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ [...] \ theassemblycontainingyourfile.dll ', 당신이 바라는 것이 아닐 수도 있습니다. 나는 정말로 원래의 질문에 대한 대답은 "똑같은 방법이 없다"라고 생각합니다. 내 대답은 또한 결점을 포함하고 있습니다 (당신이 지적한대로). –
나는 Fredrik도 그렇게 생각하기 시작했다. 고마워. –
@Fredrik - 맞아. 웹 사이트 (동적으로 컴파일 된)가 있고 응용 프로그램이 아닌 경우를 테스트하지 않았습니다. 가능한 경우 프로젝트를 웹 응용 프로그램으로 변경하면 ASP가 웹 사이트에서 수행하는 임시 어셈블리 생성이 중지됩니다. 그렇다면 일관성이 있습니다 –
[bin \ folder를 의미한다고 가정합니다] 이것은 내가하는 방법입니다 그것.
환경은 일반적으로 윈도우 응용 프로그램 및 Asp.Net 경우, 당신이해야합니다 AppDomain.CurrentDomain.SetupInformation.PrivateBinPath
가 비어 있거나 null가 아닌 경우
- 확인이 확인합니다.
- 하지 않으면, 그것은 뿌리를두고 있는지 확인 여부를
- 가없는 경우,
BinPath
이 값을 기억 (이것은 Asp.Net에서 '빈 \'을 수 있습니다) -하지만 조심 더 많은 사용자 지정 AppDomain 호스팅 환경에서 여기에 경로가 두 개 이상있을 수 있으며 은의 루트 경로를 가질 수 있습니다. 그런 다음
- 가없는 경우,
- 하지 않으면, 그것은 뿌리를두고 있는지 확인 여부를
- 그것은 (
BinPath
는 이전부터 기억됩니다)AppDomain.CurrentDomain.BaseDirectory
- 또는
Path.Combine(AppDomain.CurrentDomain.BaseDirectory, BinPath)
을합니다.
단위 테스트를위한 임시 도메인을 호스팅하는 테스트 주자 및 기타 이상한 것들이 포함 된 다른 고급 시나리오가 있습니다. Asp.Net에는 또한이 답변의 다른 곳에서 언급 된 동적 폴더가 있습니다. bin 폴더에 안정적으로 접근하려는 경우 빨간색 청어입니다.
동적으로 생성되며 해당 동적 폴더에 상주하는 Asp.Net 사이트에서 사용하기 때문에 진입 어셈블리의 경로를 사용할 수 없습니다.
동일하게 - 고려해야 할 Sql Server 호스트 도메인과 같은 것들이 있습니다.이 경우 볼 게임이 다시 변경됩니다 (이 경우 MSSQL Server 폴더가 있음).
모든 AppDomain에 대해이를 안정적으로 판단 할 수있는 솔루션은 실제 시행 착오에 의해 가장 잘 만들어 질 것입니다. 저는 모든 호스팅 시나리오에 대해 완벽한 답변을 제시 할 때까지 아쉽습니다! 그래서 가장 일반적인 것들을 고수하십시오.
단위 테스트 어셈블리 및 ASP에서 실행되는 프레임 워크 구성 요소를 작성 중이므로 동일한 질문이있었습니다.NET 웹 사이트.
모든 조합을 테스트하지는 않았지만 CodeRush 플러그인을 사용하여 단위 테스트를 실행하는 동안 IIS Express 7.5 및 Visual Studio에서 다음 코드를 테스트했지만 정상적으로 작동했습니다.
나는이 길에 나를 넣어의 MSDN 문서 이전 섹션으로 신용을주지 :
http://msdn.microsoft.com/en-us/library/aa457089.aspx#howtoexecutingapppath_topic3 어쨌든,이 코드입니다. 희망이 도움이 : 균일하여
string binPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase);
string appPath = binPath.Substring(0, binPath.LastIndexOf("bin", StringComparison.InvariantCultureIgnoreCase));
- 1. Windows 응용 프로그램과 웹 응용 프로그램 개발
- 2. ASP.NET 웹 응용 프로그램과 웹 양식 응용 프로그램 모두에 대한 사용자 지정 컨트롤 빌드
- 3. ASP.NET MVC 웹 응용 프로그램과 ASP.NET 웹 응용 프로그램 비교
- 4. 웹 응용 프로그램과 기본 응용 프로그램
- 5. asp.net mvc 응용 프로그램과 채팅 응용 프로그램 통합
- 6. ASP.Net 응용 프로그램
- 7. ASP.NET 응용 프로그램 아키텍처
- 8. ASP.net 응용 프로그램 도메인
- 9. Winform 응용 프로그램/ASP.NET 응용 프로그램과 SAP 데이터베이스의 연결
- 10. ASP.NET 응용 프로그램 - 추적
- 11. 닫기 Windows 응용 프로그램
- 12. ASP.NET 응용 프로그램 경로를 얻는 방법은 무엇입니까?
- 13. 응용 프로그램 경로를 다시 작성 ASP.NET C#
- 14. ASP.NET 응용 프로그램 배포
- 15. CMS (웹 응용 프로그램 또는 Windows 응용 프로그램)
- 16. 닷넷 응용 프로그램 설정 경로는 Windows 응용 프로그램 설정에서 기본적으로
- 17. 그래프 api를 통해 응용 프로그램 liker를 얻으십시오
- 18. Windows 응용 프로그램 데이터 디렉토리
- 19. 이 창 형태의 응용 프로그램 경로를 얻는 방법을 응용 프로그램
- 20. ASP.NET 웹 응용 프로그램
- 21. Windows 프로세스와 응용 프로그램
- 22. Windows 응용 프로그램 해상도
- 23. Windows 응용 프로그램 오류시
- 24. 애니메이션 Windows 응용 프로그램
- 25. ASP.NET 응용 프로그램 이해
- 26. 응용 프로그램 번들에서 응용 프로그램 시작
- 27. 디버깅 Asp.net 응용 프로그램
- 28. ASP.NET 응용 프로그램 아키텍처
- 29. ASP.NET 응용 프로그램 보호
- 30. ASP.net 응용 프로그램 상태
, 당신이 또는 당신이 누군가가 형태 나에게 코드의 조각을 줄 수 "뜻"당신에게 대답을 줄 것이다 하나의 방법 또는 기존의 .NET 런타임에서 유사한 "을 의미합니까 컨텍스트에 관계없이 항상 올바른 경로를 생성 할 수있는 방법을 제공 할 것입니다. " –
예, 당신은 그것을 지적했습니다, 나는 단일 방법 또는 속성을 의미합니다. 내가 어떤 컨텍스트인지 알기 위해 코드를 작성하고 싶지 않습니다. –