2014-04-15 3 views
0

.NET C# 코드에서 사용하는 .NET DLL 라이브러리 "itextsharp"를 추가했습니다. DLL은 다음 디렉토리에 존재할 수 :다른 위치에서 .NET의 동일한 dll 참조를 추가하십시오.

C:\ProgramData\<Application Name>\ or 
C:\Users\<Username>\AppData\ 
C:\Windows\System32\ or 
C:\Windows\ 

나는 DLL이 위의 위치 중 하나에있는 경우 확인하는 코드를 작성하는 방법을 알고 싶다면 다음을 사용합니다. 같은 :

string sPath = ""; 
if(File.Exist(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\<Application Name>"\\itextsharp.dll")) 
    sPath = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\<Application Name>"\\itextsharp.dll"); 
else if(File.Exist(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\<Application Name>"\\itextsharp.dll")) 
    sPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\<Application Name>"\\itextsharp.dll"); 

.... 등등 .....

다음 라이브러리와 네임 스페이스와 클래스에 액세스 할 수 sPath 변수를 사용하는 방법에 대해 설명합니다.

파일이 항상 특정 폴더에 있지 않고 기본 프로그램 파일 폴더에 모든 코드 관련 파일을 보관하고 싶지 않기 때문에이 방법이 필요합니다. "C:\Program Files\<Application Name>\" 파일이 이미 위의 위치 중 하나에있는 경우 먼저 사용하는 것을 선호합니다. 그래서 "참조 추가"를 사용하여 .NET 라이브러리를 추가하면 고정 경로입니까? 우선 정확한 경로를 찾아 코드를 사용하여 네임 스페이스와 클래스에 액세스해야합니다.

두 번째 질문은 "참조 추가"를 사용하여 위치에서 .NET dll을 추가하면 클라이언트 컴퓨터에 배포 할 때 경로가 정확히 같아야한다는 것입니다. 예를 들어 내 Windows 드라이브가 C :이고 경로가 "C:\Users\<Username>\AppData\itextsharp.dll"인데 클라이언트가 D : 드라이브에 Windows를 설치 한 경우 C 드라이브 또는 D 드라이브의 코드 액세스 경로가 표시됩니까? 그리고 프로그래밍 방식으로 경로를 변경하는 방법?

+2

글쎄, GAC (Global Assemblies Cache)에 dll을 등록하거나 상대 경로를 사용하여 참조 할 수 있습니다. 예를 들어 프로젝트에 "Libs"라는 폴더를 만들면 작업에 필요한 모든 외부 라이브러리를 저장할 수 있습니다. 배포를 실행하면 이러한 라이브러리가 항상 프로젝트와 함께 배포됩니다 (bin 폴더에서 웹 응용 프로그램과 클라이언트 응용 프로그램간에 차이가 없음). –

+1

아마도 도움이 될 것입니다 : http://stackoverflow.com/questions/15666618/csproj-multiple-hint-paths-for-an-assembly –

+1

단지 퓨전 문제를 해결하려고하지 않습니까? http://stackoverflow.com/questions/9961162/what-is-fusion-in-net-assembly – rene

답변

1

"참조 추가"를 사용하여 .NET 라이브러리를 추가하면 고정 경로입니까? - 프로젝트의 어셈블리/바이너리로 작업하는 동안 경로가 필요하지 않습니다. 여기

  1. 프로젝트의 루트 폴더에서 바이너리/의존성이 저장됩니다 폴더가 있어야합니다, 당신이 따를 수 있습니다 연습 단계입니다 경로가없는 하나하지 않은 (workstaion 또는 타사에 설치 (예 : iTextSharp, telerik) 어셈블리.
  2. 이 프로젝트의 폴더에서만 필요한 어셈블리를 참조하게됩니다.

  3. 당신이 만드는 게시/배포

    확실히 당신은 진정한로 설정 지역 복사 옵션을 설정합니다. References 탭에서 어셈블리를 선택한 다음 속성으로 이동합니다.이 참조 된 어셈블리를 모두 게시 된/배포 된 디렉토리의 bin 디렉토리로 복사하도록 Visual Studio에 말합니다.

나는 위치에서 .NET DLL을 그것이 클라이언트 컴퓨터에 배포 할 때, 다음 경로가 정확히 동일해야합니다 "참조를 추가"를 사용하여 추가 할 경우? - 위의 경우 이러한 가능성이 제거됩니다.

프로젝트가 설치 또는 웹 중 무엇이든 관계없이 게시 된 복사본에는 모든 종속성이 포함되어 있어야하므로이를 패키지라고 부릅니다.

관련 문제