2016-11-03 6 views
1

Umbraco.ModelsBuilder.ModelsModeweb.config에 대해 LiveDll을 강력하게 입력 한 모델을 활성화했습니다. 알고 계시거나 알지 못해서 Umbraco 웹 사이트의 bin 폴더에있는 Umbraco.Web.PublishedContentModels이라는 디스크에 dll이 생성됩니다.별도의 컨트롤러 프로젝트에서 참조하는 Umbraco LiveDll

내 문제는 내 (별도의) 컨트롤러 프로젝트에서 "깨끗한"참조를 얻는 방법을 이해하지 못한다는 것입니다. (나는 특히 웹 사이트 bin 폴더에있는 "있는 그대로"의 dll을 참조하는 전망을 즐기지 않는다.)

누구가이 설정을 어떻게해야하는지 안다.

+0

AppData로 설정하고 모델을 렌더링합니다. 그런 다음 별도의 프로젝트에 복사 한 다음 컨트롤러 프로젝트로 참조하십시오. – Mivaweb

답변

0

컨트롤러 프로젝트에서 Umbraco.Web.PublishedContentModels.dll 을 참조하는 경우 원형 참조가 작동하므로 작동하지 않습니다.

우리가 작동이 방법은 ModelsBuilder가

<add key="Umbraco.ModelsBuilder.ModelsMode" value="Dll" /> 

우리는 다음 Library 폴더를 설정하고 해당 폴더에 DLL을 복사 한 DLL을 설정하는 것입니다. 다른 프로젝트는 라이브러리의 dll을 참조하므로 순환 참조를 얻지 못합니다.

그래서 우리의 프로젝트 구조는 우리는 도서관에 우리가 우리가 우리를 위해 DLL을 복사 할 빌드 전 이벤트를 만든 modelsbuilder를 실행할 때마다 DLL을 복사하지 않는

MySolution 
    UmbracoWebProject 
    ControllersProject 
    Library 

같은입니다 모든 빌드마다.

사전 빌드 이벤트를 만들려면 Visual Studio에서 Umbraco 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오. Build Events를 선택하고 프로젝트 구조가 위와 동일하다고 가정하여 Pre-Build에 다음을 추가합니다. DLL이 모드를 사용

IF EXIST "$(ProjectDir)bin\Umbraco.Web.PublishedContentModels.dll" xcopy "$(ProjectDir)bin\Umbraco.Web.PublishedContentModels.dll" "$(SolutionDir)Library" /y 

, 당신은 당신이 당신의적인 doctypes

이 우리를 위해 잘 작동을 변경할 때마다 명시 적으로 Umbraco에서 모델 빌더를 실행해야합니다하지만 여전히해야하는 영역 인 것처럼 그것은 기분이 움 브라 코와 커뮤니티가 조금 더 생각해보십시오. 이것을 설치하고 잊어 버리는 해결책이 있으면 좋을 것입니다.

+0

답변 해 주셔서 감사합니다. 어쩌면 나는 똑바로 생각하지 않을거야,하지만 순환 참조가 일어나는 것을 볼 수 없다 - 'PublishedContentModels.dll'은 나의 컨트롤러 라이브러리를 알지 못했을 것인가? 어쨌든, 당신이 제안하는 것은 제가 상상했던 것입니다. "유보 (pre-build)"가 유일한 옵션 인 것 같습니다. –

+0

Umbraco가 컨트롤러에서 생성 한 모델을 사용하기 시작하면 순환 참조가 시작될 것입니다 ... 어느 시점에서 거의 확실하게 당신을 물을 것입니다 :) – wingyip