문제

우리 팀은 새로운 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 폴더에서 프로젝트를 구축하고 싶지 않습니다.

  1. 그곳에서 상자 밖에서 사이트의 모든 소스 코드가 진행되는 곳입니다.
  2. 그곳에서 모듈이 "설치"될 예정이므로 누군가가 "업데이트"되거나 다시 설치되면 덮어 쓰기됩니다.
  3. 응용 프로그램 업그레이드가 훨씬 더 어려울 수 있습니다. 많은 개발자들은 그 아이디어를 이해하지 못합니다 만지지 않습니다 원래 소스 코드는 동작을 수정하기 위해 파일입니다. 업그레이드를 수행 할 때는 덮어 쓰기 때문입니다.

모듈을 빌드하려면 모듈 별도의 프로젝트 모듈을 거기에 놓으십시오.

  1. 디버그하려면 대상 디버그 출력을 웹 bin 폴더로 만듭니다.
  2. 설치/배포하려는 경우 릴리스 모드로 빌드하고 모듈/확장 필터를 통해 설치하십시오.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top