2016-06-30 3 views
0

나는 많은 파일이 포함 된 웹 사이트를 포함하는 솔루션을 가지고 있습니다.Visual Studio 게시 할 때 일부 클래스가 DLL에서 누락되었습니다.

최근에는 사이트에 새로운 웹 페이지를 추가해야했습니다. 새 파일로 솔루션을 빌드하면 모든 것이 작동합니다. 웹 게시 마법사를 사용하려고하면 프로세스가 중단됩니다.

기본적으로, 이런 것입니다 :

  • 새 페이지 (예를 들어, 내 페이지가) Visual Studio에서
  • 빌드 로컬 webproject에 추가, 모든 모든 권리입니다. 최종 어셈블리에는 코드 기반에 포함 된 모든 클래스가 있습니다.
  • 웹 사이트를 파일 시스템에 게시 (CSProject에서 마우스 오른쪽 버튼을 클릭하고 Publish)하면 "myPage"클래스가 없다는 오류가 발생합니다.

나는 세 가지 일반적인 위치에 DLL 버전 (예 : myWebSite.dll) 확인했습니다

  • \ 빈 -> 컴파일 된 코드는 "마이 페이지"클래스를 포함하여, 완료
  • \ OBJ \ Debug \ Package \ PackageTmp \ bin - 컴파일 된 코드가 완료되지 않았습니다. 새 클래스가 "MyPage"클래스를 포함하여 누락되었습니다.
  • \ obj \ Debug \ AspnetCompileMerge \ Source \ bin -> 컴파일 된 코드가 완료되지 않았으며 새 클래스가 잘못되었습니다. "MyPage"클래스를 포함한
,
+1

'obj' 폴더는 최종 이진 코드를 포함하지 않습니다. 이것은 본질적으로 임시 폴더입니다. 게시는'obj'에서 아무것도 사용하지 않습니다 *. 어떻게 웹 사이트를 게시 했습니까? 어떤 설정을 사용 했습니까? 아마도 잘못된 폴더를 선택하셨습니까? 사용중인 Visual Studio의 버전은 무엇입니까? –

+0

답장을 보내 주셔서 감사합니다. VS 버전 2010 및 2012, 전혀 차이가 없습니다. 웹 사이트는 파일 시스템에 로컬 게시로 게시됩니다 (프로젝트 이름을 마우스 오른쪽 버튼으로 클릭하고 게시). 로컬 폴더 (c : \ publish), 게시하기 전에 모든 파일 삭제, 사전 컴파일 응용 프로그램 –

+0

솔루션을 정리하고 다시 작성 했습니까? 어리석은 것처럼 들릴지도 모르지만 때로는 VS가 DLL이 수정되어 덮어 쓰지 않는다는 사실을 놓치게됩니다. – user1666620

답변

0

해결책은 순환 참조하여,과 같이 설계된다

MySolution 
    Project A 
    Project B 
    Project C 
    ... 

프로젝트 A는을 투사에서 어셈블리 출력을 참조 프로젝트 B를 참조한다.

로컬로 빌드 할 때 A에서 생성 된 어셈블리가 ProjectA.dll이고 다시 생성 되었기 때문에 모든 것이 작동했습니다. Visual Studio (웹 게시, TFS 빌드 및 게시 기능 아님)에서 "게시"를 사용하면 참조가 망가져 결과 Dll에 일부 부품이 누락 된 것처럼 보입니다.

이 결함은 참조 된 순환 조립품이 최신 것이 아니고 구형 조립품이기 때문에 발생합니다.

관련 문제