2011-09-23 6 views
2

다른 사람이 만든 ASP.NET 응용 프로그램에서 사용중인 클래스 라이브러리 DLL을 업데이트하라는 메시지가 표시되었습니다. 그러나 ASP.NET 응용 프로그램의 폴더 구조를 살펴보면 두 개의 다른 폴더 아래에 DLL이 있고 프로그램을 처음 실행할 때 DLL을 사용하지만 IIS를 다시 시작한 후에 DLL을 사용하는 것으로 나타났습니다. DLL을 응용 프로그램에 한 번만 사용할 수 있도록 문제를 해결할 계획을 갖고 있지만 먼저 어떤 일이 일어나는지 이해하고 싶습니다.ASP.NET에서 클래스 라이브러리를 찾는 방법은 무엇입니까?

DLL은 MyLib.DLL이라고하며 BIN 하위 폴더와 MyLibrary 폴더에 있습니다. 다음은 응용 프로그램에서 ASPX 페이지 클래스 라이브러리의 메소드를 호출하는 방법의 예는 다음과 같습니다

Dim oMyClass As New MyLib.MyClass 
Dim sTemp As String = oMyClass.GetVersion() 

응용 프로그램은 또한 web.config 파일에서이 부분이 있습니다

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="MyLib" culture="neutral"/> 
     <codeBase version="1.0.0.0" href="MyLibrary/MyLib.dll"/> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

앱을 한 이후를 두 개의 서로 다른 MyLib.DLL 사본, 둘 다 업데이트되었으며 GetVersion 함수가 다른 결과를 반환하여 어떤 DLL이 사용되고 있는지 알 수있었습니다. 앱을 처음 실행하면 ASP.NET이 "Temporary ASP.NET Files"폴더 아래에 폴더를 만들고 MyLib.DLL의 BIN 버전을 복사하는 것을 볼 수 있습니다. 그리고 GetVersion 함수를 호출 할 때 응용 프로그램은 "From BIN folder"를 반환합니다. 그러나 IIS를 다시 시작하고 응용 프로그램을 다시 실행하면 GetVersion이 "From MyLibrary folder"를 반환하여 BIN 폴더가 아닌 MyLibrary 폴더의 DLL을 사용 중임을 나타냅니다.

그렇다면 ASP.NET은 BIN 버전의 DLL을 먼저 사용하지만 IIS를 다시 시작한 후 Codebase 설정에 지정된 DLL을 사용하는 이유는 무엇입니까? DLL의 BIN 버전을 제거하려면 응용 프로그램이 MyLibrary 폴더의 복사본 만 사용하도록 구성 할 수 있습니까? 나는 BIN 버전을 없애려고했지만 그때 애플 리케이션은 나에게 어셈블리를 찾을 수 없다는 오류를 주었다.

감사합니다. 저는 ASP.NET에 익숙하지 않으므로이 질문이 의미가 있기를 바랍니다.

답변

0

MyLibrary 디렉토리를 가리키는 dependentAssembly 호출을 제거하려고 했습니까? 개인적으로, 나는 그것이 표준 연습 및 추가 구성이 필요 없기 때문에 bin 디렉토리를 사용하는 것이 더 합리적이라고 생각한다.

+0

예, 시도해 보았습니다. 하지만 여전히 (현재 구성에서) 이유를 이해하고 싶습니다. BIN DLL을 먼저 사용한 다음 다시 시작한 후 다른 DLL을 사용합니다. – CowherPower

관련 문제