Visual Studio를 사용하여 C# 프로그램을 만들고 있습니다. 내가로드중인 타사 DLL이 있습니다. 그것은 작동하지만, 나는 그것이 컴파일 디렉토리의 하위 디렉토리에 있기를 원한다. (Release 대신 Release \ lib \). exe.config 파일을 사용하여이 작업을 수행 할 수 있지만 사용자가 프로그램에서 DLL을 찾는 위치를 변경할 수 없도록하고 싶습니다. 그렇다면 exe.config를 사용하지 않고 하위 디렉토리에서 DLL을 어떻게 참조합니까?Visual Studio - 컴파일 폴더 외부에서 참조로드
답변
도메인에 대해 AppDomainSetup.PrivateBinPath 속성 설정이 필요하다고 생각합니다. 이 속성에서 참조 어셈블리가있는 폴더 경로 (";"로 구분 된 경우)를 지정하십시오. 이 방법으로 필요한 참조를 위해 지정된 디렉토리를 찾기 위해 어셈블리에 서명합니다.
이 속성은 하위 디렉토리 인 bin 디렉토리에 대해서만 작동하므로주의해야합니다.
편집
예 :
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = "path1;path2;...";
행운을 빕니다.
좋아요,이게 내가 필요한 것 같아요. 미안해, 나는 이런 종류의 물건으로는 좋지 않다. 내 Program.cs에서 Main() 함수의 맨 위에 AppDomainSetup을 두었습니다. appdomainsetup = new AppDomainSetup(); \t \t \t appdomainsetup.PrivateBinPath = "\\ lib \\"; 어떻게 그 변수를 사용합니까? – Aidan
@ 에이 단 : 체크 아웃 내 편집 된 댓글 – Tigran
그건 작동하지 않습니다 : /. 변경된 직후에 변경된 값을 인쇄 해 보았습니다. 아무 것도 나오지 않았습니다. 즉, 변수를 업데이트하지 않는다는 뜻입니다. 나는 당신이해야 할 일은 새로운 도메인을 만들고 그것을 설정하는 것이라고 생각합니다. 나는 지금 그것을하는 방법을 이해하려고 노력하고있다. ... – Aidan
dll을로드하기 전에 PrivateBinPath를 지정하는 것이 중요합니다.
static class Program
{
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
AppDomain.CurrentDomain.SetupInformation.PrivateBinPath = "path";
Application.Run(new Form1());
}
}
그리고 응용 프로그램 폴더에 DLL을 우리가 지정 PrivateBinPath 폴더에 다른 DLL을 필요로하는 경우, 그것은 작동하지 않습니다. 모든 dll은 같은 폴더에 있어야합니다 ...
- 1. Visual Studio 폴더 구조
- 2. Visual Studio 외부에서 AccessViolationException이 발생합니까?
- 3. Visual Studio 외부에서 XNA 개발
- 4. Visual Studio 외부에서 VersionControlExt.Explorer 사용
- 5. Visual Studio 폴더 파일 경로
- 6. Visual Studio 2012에서 폴더 열기
- 7. Visual Studio 2005에서 lighttpd 컴파일
- 8. Visual Studio 6.0에서 MFC 컴파일
- 9. Visual Studio 2010 컴파일 오류
- 10. Visual Studio 2008 Dual 컴파일
- 11. Visual Studio 2010 컴파일 오류
- 12. Visual Studio, 매개 변수로 컴파일
- 13. pdbstr이 설치 폴더 외부에서 작동하지 않습니다.
- 14. Visual Studio 외부에서 프로그램이 제대로 실행되지 않습니다.
- 15. Visual Studio 외부에서 OpenCV VideoCapture가 작동하지 않습니다.
- 16. Visual Studio 외부에서 프로젝트를로드하지 않도록 솔루션 수정
- 17. Visual Studio 2010 외부에서 실행하면 게임이 중단됩니다.
- 18. 프로그램이 Visual Studio 외부에서 다르게 동작하는 동작
- 19. Visual Studio 2012를 열면 컴파일 시간이 느려짐
- 20. Visual Studio 2008에서 Dll 폴더 변경 C#
- 21. 사용자 AppData 폴더의 ReflectedSchemas 폴더 (Visual Studio)
- 22. Visual Studio 설치 프로젝트 폴더 사용 권한
- 23. Visual Studio : 지정된 이름으로 폴더 만들기
- 24. Visual Studio 2010에서 폴더/프로젝트 아이콘 변경
- 25. Visual Studio Solution에 폴더 구조 추가
- 26. Visual Studio 2008 중복 프로젝트 폴더 문제
- 27. Visual Studio Installer 설치 프로젝트에서 폴더 만들기
- 28. visual studio 설치 및 배포 설치 폴더
- 29. Visual Studio 외부 SVN에 기존 폴더 추가하기
- 30. Visual Studio : 디자인 문서 폴더 향상
폴더에 복사 .. 현재 참조를 제거한 다음 참조로 이동하여 .dll이 위치한 위치를 추가하고 탐색하십시오. 여기에 질문이 있습니다. 응용 프로그램을 배포 할 때 .. 대상 컴퓨터에서 로컬에 배치 할 위치에 따라 폴더를 만들지 아니면 copy local = true ..를 설정 하시겠습니까? 대상 컴퓨터로 포팅하는 경우 GAC 사용에 대해 생각해 보셨습니까? – MethodMan
나는 이미 그것을 시도했다 ... 그것은 출력 디렉토리에 그것을 복사하거나, 내가 끄면 런타임에 오류를 준다. 대상 컴퓨터에는 exe가있는 bin 폴더가 있고 그 안에 dll이있는 lib 폴더가 있습니다. 또한 다른 것들도 있지만 지금은 중요하지 않습니다. 또한 사람들이 GAC를 사용할 수 있다고 말한 다른 게시물을 보았지만 매우 나쁜 아이디어였습니다 ... 그렇게하지 않으면 가능하면 더 좋을 것입니다. – Aidan