2012-06-22 2 views
0

asp.net 웹 사이트를 사전 컴파일하기 위해 aspnet_compiler를 사용합니다. 그런 다음 aspnet_merge를 실행하여 프리 컴파일 된 어셈블리를 하나로 병합합니다.aspnet_merge가 dll을 찾을 수 없음 오류를 발생했습니다.

아쉽게도 aspnet_merge는 병합 프로세스에서 어셈블리 중 하나를 포함하지 않습니다. 따라서이 어셈블리는 변경되지 않습니다. 더욱 불행한 점은이 어셈블리가 으로 합쳐진 어셈블리 중 하나를 참조하고이 참조가 aspnet_merge에 의해 업데이트되지 않는다는 것입니다. 따라서이 DLL을 사용할 때 FileNotFoundException "파일 또는 어셈블리를로드 할 수 없습니다."이 발생합니다. 나는이 왜 aspnet_merge 무시 추측

App_Web_nameofusercontrol.ascx.xxxxxxxx.dll 

:

지금까지 내가 잘못된 DLL이 같은 이름이있는 반면 프리 D 단계 이후, 대부분의 어셈블리

App_Web_xxxxxxxx.dll. 

같은 이름이 있는지 파악 그것. aspnet_merge가 -log 옵션을 사용하여 무시하고 입력 어셈블리 목록을 생성한다는 것을 확인했습니다.

나는이 같은 aspnet_compiler 및 aspnet_merge 전화 : 나는 현재 디 컴파일 aspnet_merge 코드를 찾고 있어요

aspnet_compiler.exe -v VirtualDirectoryName -p ActualDirectory c:\precompileoutput 
aspnet_merge.exe c:\precompileoutput -o mergeddllname 

, 그것은 병합 DLL을하는 결정, 그러나 아마 누군가가이 때 사용 어떤 논리를 이해하려고 노력 전에이 문제를 보았거나 제안이 있습니까?

aspnet_merge가 이해할 수있는 dll을 aspnet_compiler에서 생성하는 방법을 찾고 있습니다. aspnet_merge가 삭제하는 app_web * dll을 참조하는 모든 어셈블리를 업데이트하도록 유도하는 방법을 찾고 있습니다. 감사!

업데이트 : aspnet_compiler는 해당 .compiled 파일을 생성하지 않기 때문에 aspnet_merge에서, App_Web_nameofusercontrol.ascx.xxxxxxxx.dll을 무시합니다. 또한 usercontrol은 App_Web_xxxxxxxx.dll 어셈블리 중 하나로 컴파일 된 것으로 보입니다. 그러나 동일한 사용자 정의 컨트롤이 두 개의 다른 어셈블리로 컴파일되는 이유를 알지 못합니다. 아마도 이상한 순환 참조 문제일까요?

답변

0

문제는 폴더 B의 세 번째 컨트롤 u3이 U1을 참조하여 순환 참조가 발생했을 때 폴더 B의 다른 컨트롤 U2를 참조하는 폴더 A의 한 사용자 컨트롤 U1이 원인이라고 밝혀졌습니다. U2를 폴더 A로 이동하면 문제가 해결 된 것으로 보입니다.