DLL 관리하기!
반응형

또 오랜만에 기술 포스팅.


현재 나는 Infragistics라는 Lib를 주로 사용하고있다...


근데 뭐 이런 Lib를 사용하면 항상 걸리는게... 이 Lib가 설치가 되어있으면 상관없는데....설치안되었을때의 문제....


당연히 설치가 안되어있으면... 프로그램이 안돌아간다........


그래서 항상 Visual Studio에서 Local Copy를 true로 설정해준다.....


그래도.. 중간중간 빠지는 DLL은 존재하기 마련......


이것은 그럴때 사용할 수 있는 기능인것이다!!


WPF를 기준으로 설명하자면...


WPF 프로젝트 생성 시 app.config가 생성됨을 확인 할 수 있을 것이다.


해당 app.config에 아래와 같은 코드를 삽입!

<configuration>
  <runtime>
    <assemblybinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatepath="Folder1;Folder2\Folder21">
  </probing></assemblybinding>
</runtime>
</configuration>


위 코드를 설명하자면 실행되는 .exe파일의 위치에서 Folder1, Folder2\Folder21 2개의 폴더를 참조하여 dll를 동적 로딩하겠다 라는 것!


위 코드를 넣어두면.. 만약 dll이 빠지더라도 해당 폴더에만 dll이 있으면 문제없이 작동 가능!


가끔 dll이 빠졌을때는 괜찮게 사용할 수 있을 것같다.


하지만..


단점은 존재하는 법!!


난 1개의 폴더에 모든 dll을 넣어두고 해당 폴더를 모든 프로젝트가 참조하도록 하고싶지만..


폴더 설정 시 실행하는 .exe파일의 위치 내에서만 참조가 가능하다......


10개의 .exe가 있다면 10개의 .exe 위치에 다 복사해야하는 것.....


이거는...안되지...........


해당 부분만 찾으면.... 참 좋게 쓸수있을 것 같다.(근데 안된다는 것 같음 ^^......)



ps. 추가 코드



new System.EnterpriseServices.Internal.Publish().GacInstall("aaa.dll");


위와 같은 코드를 이용하여 GAC로 등록해두면 DLL이 필요없게 됨.. 위와같은 방법도 괜차늠!!!!



반응형