2009-12-01 3 views
1

MSBuild와 Microsoft 웹 배포 대상을 사용하여 사전 컴파일 및 병합하는 타사 ASP.NET WebSite 프로젝트가 있습니다. .aspx 및 .ascx 파일을 사전 컴파일하지 않고 코드 파일 만 미리 컴파일합니다.ASP.NET 미리 컴파일이 단일 사용자 컨트롤을 병합하지 못합니다.

사전 컴파일 단계에서 사용자 정의 컨트롤은 최종 WebSite.dll 어셈블리에 병합되지 않은 어셈블리로 컴파일됩니다. 최종 출력은 포함

  • WebSite.dll
  • App_Web_selectsinglepath.ascx.73690ebc.dll

모든 다른 사용자 컨트롤이 App_Web_abcdefgh.dll 이러한 어셈블리와 같은 이름이로 합병과 어셈블리로 컴파일 된 WebSIte.dll,이 컨트롤 하나가 아닙니다.

이 문제의 원인은 무엇입니까?

+0

빌드 출력을 게시 할 수 있습니까? – Bob

답변

-2

사용자 정의 컨트롤은 별도의 어셈블리로 컴파일되므로 사용자 정의 컨트롤을 웹 컨트롤로 취급 할 수 있습니다. ILMerge 유틸리티를 사용하여 여러 어셈블리를 하나로 병합 할 수 있습니다. 여기에 a good page explaining this.

+0

고마워요,하지만 그건 제가 묻고있는 것이 아닙니다. –

0

웹 응용 프로그램 프로젝트의 명령 줄에서 aspnet_compileaspnet_merge을 사용하려고하는 비슷한 문제가있었습니다. 두 컨트롤은 항상 App_Web_[hex].dll 대신 명명 된 어셈블리를 사용하고 병합 후에로드하지 못합니다.

내 경우에는 내가 어셈블리로드 오류를 제거 aspnet_merge에 보이는 모든했다 App_Web_[control_name].[hex].dll으로 제어 모든 라이브러리를 생성 한 aspnet_compile 전화,,,에 -fixednames 플래그를 추가 할 수 있었다.

여전히 이러한 컨트롤이 다른 파일 이름 패턴 (계층에 중복 된 페이지 또는 컨트롤 이름 없음)으로 생성되지만 HTH 사용자로 생성되는 이유는 여전히 이해할 수 없습니다.