22

누구든지 asp.net mvc 3에서 다중 프로젝트 영역 지원에 대한 아이디어가 있습니까? 2. mvc 2의 미래 상태로 저하되었으므로 아직 포함되지 않은 경우 ASP.Net MVC Portable Areas via MvcContrib을 기다려야합니다. 당신은 당신의 expreriences를 공유 할 수 있습니까?ASP.Net MVC 3의 다중 프로젝트 영역

대형 응용 프로그램을 관리하기 위해 권장되는 방법은 무엇입니까? 나는 MEF에 대해 읽었다. 어떤 시나리오에서 MEF가 권장됩니까?

답변

15

저는 Microsoft에서 ASP.NET MVC의 개발 책임자입니다.

ASP.NET MVC 3에는 다중 프로젝트 영역을 포함 할 계획이 없습니다. 그러나 향후에 다시 계획 할 영역입니다.

한편 MvcContrib의 솔루션이 최선의 방법 일 것입니다. MVC Futures 다운로드에는 원래 다중 프로젝트 영역 기능의 오래된 버전이 포함되어 있습니다. 또한 전체 소스 코드를 사용할 수 있으므로 필요에 맞게 사용자 정의 된 솔루션을 구성 할 수 있습니다.

+20

이것은 겸손한 의견으로는 현재 ASP.NET MVC의 가장 약한 부분입니다. MVC 팀이 가능한 한 빨리이 문제를 해결해주기를 바랍니다. 모듈 식 환경을 만들 수 있다는 것이 확실히 우리에게 필수적입니다. – W3Max

+0

MVC4 타이밍은 조금 더 빨라질 수 있지만 Silverlight를 사용하여 limbo에있는 엔터프라이즈 LOB와 함께라면 MVC4로 전환하기 위해 이야기를 확고히해야합니다 .... 희망에 따라 P & P는 예제와 같은 실크에 참여할 수 있습니다! – felickz

6

동일한 구조가 있어야하므로 별도의 프로젝트로 영역을 갖는 방법을 알아 냈습니다. 필요한 코드 변경은 없으며 약간의 구성 작업 만 필요합니다.

블로그 항목을 만들 예정이지만 여기에 기본 단계가 있습니다.

하나의 MVC 응용 프로그램 프로젝트가 있다고 가정 해 보겠습니다.이 응용 프로그램은 "쉘"응용 프로그램입니다.

  1. 마우스 오른쪽 버튼으로 쉘 프로젝트를 클릭하고 "영역 추가 ..."를 클릭하십시오. 영역 이름을 입력하십시오. 그러면 영역이있는 영역 폴더가 만들어집니다. (이것은 100 %는 필요하지 않지만 "Areas"폴더가 필요하고 응용 프로그램에 대한 XXXXAreaRegistration 클래스를 훔칠 수 있습니다.)

  2. 솔루션에서 MVC3 빈 프로젝트를 새 지역에 맞게 만듭니다. XXXXAreaRegistration.cs 파일을 새 프로젝트로 이동하고 해당하는 네임 스페이스를 조정하십시오.

  3. 템플릿 마법사가 추가 한 영역 폴더 아래의 폴더를 삭제하십시오.

  4. 새 프로젝트의 web.config를 수정하고 연결 문자열과 인증, 멤버십, 프로필, 역할 관리자 섹션을 꺼냅니다. web.config는 필요 없지만 면도기가 없으면 intellisense가 작동하지 않습니다.

  5. 셸 프로젝트의 "Areas"폴더에 가상 디렉터리를 별칭으로 사용하고 "area"프로젝트를 가리 킵니다. 이를 위해 IIS 또는 IIS Express를 사용해야합니다. 나는 IIS를 사용한다. IIS express에서는 설정 파일을 수정해야합니다. ScottGu는이 작업을 수행하는 방법에 대한 블로그 항목이 있다고 생각합니다.

  6. dll을 "셸"프로젝트 bin 폴더로 복사하려면 "영역"프로젝트에서 빌드 후 이벤트를 만듭니다. 내 빌드 이벤트는 다음과 같습니다. copy $ (TargetDir) \ $ (TargetFileName) $ (SolutionDir) \ ShellProjectName \ bin \ $ (TargetFileName)

  7. 쉘 web.config에서 "area"프로젝트를 System.Web에 추가하십시오./어셈블리 섹션.

6/7 대신 "셸"프로젝트로 "영역"프로젝트를 참조하면됩니다.그러나 그때마다 모든 "영역"dll을 배포해야합니다. 리플렉션 또는 MEF를 사용하여 앱을 시작할 때 앱 도메인에 '영역'어셈블리를 추가하는 코드를 조사하려고합니다.

라우팅을 편집하고 셸 응용 프로그램과 영역 응용 프로그램에서 네임 스페이스 필터를 추가 할 수도 있습니다. 이렇게하면 판매 앱과 지역 앱간에 중복 컨트롤러 이름이 충돌하는 것에 대해 걱정할 필요가 없습니다.

그게 전부입니다. 공식 블로그 항목을 올리면 여기에 링크를 추가하는 것을 기억하려고합니다.

관심있는 사람이 있다면 http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects에서 내가 어떻게하는지 블로깅했습니다.

+0

흠 재미있게 보입니다. 귀하의 블로그 항목을 특별히 기다리는 중 MEF 부분이 – Tassadaque

+0

추가 테스트를 마친 후 해당 지역 프로젝트에 대한 참조가 필요 없음을 확인했습니다. 분명히 MVC 코드는 BuildManager를 사용하여 어셈블리 목록을 가져옵니다. 따라서 쉘 프로젝트 bin 폴더로 출력하기 위해 "영역"프로젝트를 설정하는 것 이상을 수행 할 필요는 없습니다. – PilotBob

+0

누구나 관심이 있다면 http://bob.archer.net/content/aspnet-mvc3-areas-separate-projects에서 내가 어떻게하는지 블로그에 올렸습니다. – PilotBob