문제

저는 몇 가지 다른 프로젝트가 포함된 ASP.NET 웹 사이트 솔루션을 실행하고 있습니다.MSBuild 프로젝트에서 이를 수행할 수 있다는 것을 알고 있지만 이것이 최선의 방법입니까?만들기가 쉽나요?nAnt, CruiseControl.NET 또는 다른 솔루션이 더 좋습니까?

사이트를 구축할 때(다음을 사용하여 웹 배포 프로젝트), 프로젝트의 특정 폴더를 Release 폴더로 복사하지 않도록 빌드의 일부를 자동화할 수 있나요?예를 들어 로컬 검색 색인, 이미지 및 폴더의 기타 콘텐츠 부분이 포함된 폴더가 있지만 프로젝트를 배포할 때 이러한 항목이 필요하거나 업로드되지 않습니다.

또한 빌드 및 버전 번호를 자동으로 증가시키는 이러한 유형의 솔루션을 찾고 있습니다.

도움이 되었습니까?

해결책

다음은 .wdproj 파일에서 이러한 종류의 작업을 스크립팅하는 웹 배포 프로젝트의 예입니다.

  <Target Name="AfterBuild">
    <!-- ============================ Script Compression============================ -->
    <MakeDir Directories="$(OutputPath)\compressed" />
    <Exec Command="java -jar c:\yuicompressor-2.2.5\build\yuicompressor-2.2.5.jar --charset UTF-8 styles.css -o compressed/styles.css" WorkingDirectory="$(OutputPath)" />
    <Exec Command="move /Y .\compressed\* .\" WorkingDirectory="$(OutputPath)" />
    <RemoveDir Directories="$(OutputPath)\sql" />
    <Exec Command="c:\7zip-4.4.2\7za.exe a $(ZipName).zip $(OutputPath)\*" />
  </Target>

이렇게 하면 폴더를 삭제할 수 있습니다.

(폴더를 복사하지 않으려면 조금도, 솔루션 파일은 이를 지정하는 장소가 될 것입니다. 하지만 그것을 사용할 필요는 없었습니다.)

다른 팁

MaseBase를 사용할 수 있습니다 웹 배포 프로젝트 웹 사이트를 구축하고 패키지화합니다.우리는 웹 애플리케이션 측면이 있는 프로젝트에 대해 항상 그렇게 합니다.WDP를 웹 사이트에 할당한 후 다음을 열 수 있습니다. .wdproj 일반 텍스트 XML 파일로 저장됩니다.마지막에는 빌드 프로세스 중에 발생하는 이벤트 시퀀스를 나타내는 MSBuild 대상의 주석 처리된 섹션이 있습니다.

<!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Other similar extension points exist, see Microsoft.WebDeployment.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="BeforeMerge">
</Target>
<Target Name="AfterMerge">
</Target>
<Target Name="AfterBuild">
</Target>
-->

원하는 대상의 주석 처리를 해제할 수 있습니다(예:"AfterBuild") 반복적인 빌드 후 활동을 수행하는 데 필요한 작업을 여기에 삽입합니다.

개별 파일에 대해 빌드 작업/출력 디렉터리로 복사 속성을 설정하여(파일을 선택하고 F4 키를 눌러 속성 창 열기) 빌드 중에 발생하는 작업을 제어할 수 있지만 폴더에 대해서는 제어할 수 없습니다.수동으로 수행하고 싶지 않은 경우 (사전) 빌드 작업을 통해 자동화할 수 있습니다.

또는 프로젝트에서 이러한 폴더를 제외할 수 있습니다(마우스 오른쪽 버튼을 클릭하고 '프로젝트에서 제외').해당 파일은 여전히 ​​존재하지만(솔루션 탐색기에서 "모든 파일 표시") 프로젝트를 빌드할 때 포함되지 않습니다.

CruiseControl.NET은 다른 문제(지속적 통합)를 해결합니다...그러나 나는 특히 귀하가 요구하는 사항에 대해 NAnt를 사용하여 큰 성공을 거두었습니다.학습 곡선이 있지만 일단 익숙해지면 그것 없이 어떻게 지냈는지 궁금할 것입니다.

프로젝트 항목을 "출력 디렉터리에 복사"로 설정하는 방법에 대한 @Fredrik의 팁 외에도 빌드 탭의 프로젝트 속성에서 빌드 후 작업을 지정하고 copy.exe 및 move.exe와 같은 CMD 명령을 포함할 수도 있습니다.

우리는 FinalBuilder를 사용하여 빌드 후/빌드 전 작업을 자동화합니다.웹 인터페이스도 있으므로 웹 사이트에 로그인하고 버튼을 클릭하여 빌드를 시작하거나 웹 사이트를 푸시할 수 있습니다.

http://www.finalbuilder.com/

원하는 작업을 수행하도록 웹 배포 프로젝트의 MSBuild 파일을 편집할 수 없습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top