소스 제어로 dotnetnuke 개발 환경을 설정하는 방법은 무엇입니까?
-
10-07-2019 - |
문제
우리 팀은 새로운 DotnetNuke 웹 애플리케이션을 개발하고 있으며 소스 제어 및 자동화 된 빌드를 통해 개발 환경을 설정하는 데 권장되는 내용을 알고 싶습니다. DNN 소스 코드를 사용자 정의 모듈 및 확장자 소스 코드와 별도로 유지하고 싶습니다.
Visual Studio 용 DotnetNuke 컴파일 모듈 템플릿은 DNN 소스 코드의 DesktopModules 디렉토리에 소스 코드를 저장하고 DNN 소스 코드 빈 디렉토리에 출력하기를 원합니다. 이것이 권장 구조입니까? 오히려 파일을 다른 위치에 보관하지만 각 변경에 대한 모듈을 설치해야하므로 로컬로 실행하고 디버깅하는 것이 더 어려워집니다. 또한 자동화 된 빌드는 어떻게 변경해야합니까?
다른 사람들이 이것을 어떻게 설정 했습니까? 권장 모범 사례가 있습니까?
해결책
우리는 일반적으로 모듈 코드를 아래 폴더에 유지하는 것을 고수합니다. DesktopModules
웹 사이트에 구축 bin
예배 규칙서.
소스 컨트롤에서는 전체 웹 사이트가 아닌 개별 모듈을 매핑합니다. 우리가 작업하는 일에 따라 모듈은 소스 제어의 전체 프로젝트 일 수 있거나 동일한 프로젝트에 여러 관련 모듈이있을 수 있습니다.
DNN에서는 변경 사항을 자동으로 배포하는 것이 다소 어렵습니다. 모듈을 설치 가능한 양식으로 포장하는 빌드 스크립트가있는 것이 좋습니다. 그런 다음 설치 가능한 패키지를 웹 사이트에 복사 할 수 있습니다. Install/Module
폴더 및 URL을 가져옵니다 /Install/Install.aspx?mode=InstallResources
, 해당 폴더에 패키지를 설치합니다.
다른 팁
소스 컨트롤을 위해 자체 프로젝트에서 모듈을 개발합니다. 여기에는 모듈 코드, 테스트 코드, 데이터 제공자 코드 (해당되는 경우) 및 기타 사항이 포함됩니다. 이것은 다른 프로젝트와 마찬가지로 소스 컨트롤에 체크됩니다. 모듈 프로젝트에는 특정 DNN 웹 사이트에 대한 링크가 포함되어 있지 않으며 DNN 참조는 프로젝트에서 대상 빌드를 참조하는 공통 "BIN"디렉토리로 이루어집니다. 예를 들어, 내 프로젝트 폴더에는 bin460, bin480, bin510, bin520 등이 있습니다.이 폴더 각각은 특정 DNN 버전의 바이너리 세트를 보유합니다. 이렇게하면 특정 버전에 대해 빌드 할 수 있지만 원하는 버전에 대해 테스트 할 수 있습니다.
DNN 설치에서 모듈을 제자리에 제자리에 제자리에 제정하는 문제는 - 때로는 단일 상위 디렉토리에서 모든 모듈 코드가 쉽게 격리되지는 않습니다. PA 모듈 접근 방식에 적합하지 않습니다. 개발 또는 테스트를위한 다른 DNN 버전 - 특히 통합 VS 소스 제어 솔루션을 사용하여 DNN 솔루션의 실수로 쉽게 소스 제어 부분.
이 접근법은 전체 프로젝트를 컴파일하려고하지 않기 때문에 빠르게 컴파일됩니다. 테스트 배포의 경우 모듈의 여러 부분을 대상 웹 사이트에 복사하는 빌드 스크립트가 있습니다. 컴파일 (빌드 스크립트 링크)을 통해 수행하거나 CMD 창에서 성공적인 컴파일을 한 후에 실행할 수 있습니다. 내 빌드 스크립트에는 '대상'환경 스위치가있어 'DNN520'이라고 말할 수 있습니다. 이 작업이 작동하기 전에 먼저 모듈 구성을 수동으로 작성해야하지만 이는 일회성 노력이므로 내보내기 기능을 사용하여 .dnn 모듈 매니페스트를 만들 수 있습니다.
모듈 패키지를 만들려면 소스 디렉토리에서 다양한 부품을 가져 오는 포괄적 인 스크립트에 시간을 투자하고 설치 패키지에 삽입하십시오. 소스 제어 폴더의 모든 부품을 유지하고 임시 디렉토리로 복사 한 다음 명령 줄 지퍼 유틸리티 (고대 버전의 PKZIP를 사용하여)를 실행하여 설치 가능한 파일로 포장하십시오.
이 접근법의 이점은 다음과 같습니다. - 설치된 코드에서 모듈 코드를 분리 - 소스 제어에서 모듈 코드 만 유지하는 간단한 방법 (모든 웹 사이트 코드를 제외 할 필요는 없음) - 다양한 DNN 버전에서 모듈을 신속하게 테스트 할 수 있습니다. - 포장 스크립트는 테스트/배포 설치를위한 새 버전의 모듈을 빠르고 쉽게 구축 할 수 있습니다.
단점은 - VS에서 Magic Green 'Go'버튼을 사용할 수 없습니다 (디버거를 수동으로 첨부해야 함) - 내 위치를 개발하는 것보다 더 많은 설정 시간
Bduke의 답변에 응답하여. DesktopModules 폴더에서 프로젝트를 구축하고 싶지 않습니다.
- 그곳에서 상자 밖에서 사이트의 모든 소스 코드가 진행되는 곳입니다.
- 그곳에서 모듈이 "설치"될 예정이므로 누군가가 "업데이트"되거나 다시 설치되면 덮어 쓰기됩니다.
- 응용 프로그램 업그레이드가 훨씬 더 어려울 수 있습니다. 많은 개발자들은 그 아이디어를 이해하지 못합니다 만지지 않습니다 원래 소스 코드는 동작을 수정하기 위해 파일입니다. 업그레이드를 수행 할 때는 덮어 쓰기 때문입니다.
모듈을 빌드하려면 모듈 별도의 프로젝트 모듈을 거기에 놓으십시오.
- 디버그하려면 대상 디버그 출력을 웹 bin 폴더로 만듭니다.
- 설치/배포하려는 경우 릴리스 모드로 빌드하고 모듈/확장 필터를 통해 설치하십시오.