2016-11-11 2 views
0

내가 수행하려고하는 것은 프로젝트가 변경되었음을 나타내는 플래그를 설정할 수 있도록 빌드 중에 프로젝트 변경을 감지하는 것입니다. C# 구성 요소가 증분 빌드 및 CoreCompileDependsOn을 사용하여 변경된시기를 감지하는 방법을 이미 알아 냈습니다. 그러나 이것은 프로젝트의 컨텐트 파일이 변경되었을 때 트리거하지 않는 것 같습니다. 내가 아는 바로는 프로젝트 내의 콘텐츠 파일 설정에 따라 SkipUnchangedFiles = "true"를 지정하는 복사 작업이있을 것입니다. 출력 디렉토리로 복사 (복사하지 말고, 항상 복사, 항상 복사)를 선택합니다. 이 프로세스가 어디서 발생하는지, Microsoft.CSharp.targets 파일이 있을지는 모르겠습니다. 누군가가 업데이트 된 파일을 bin 출력에 복사 한 경우에만 실행되는 종속 작업을 추가하는 방법에 대해 조언 해 주실 수 있습니까? 아주 간단한 예제만으로도 충분합니다.MSBuild 대상 - .csproj 콘텐츠 파일의 변경을 감지하는 방법

+0

이 당신이 원하는하지 않을 수 있습니다 :이 설정 '신형 경우 복사'한 모든 콘텐츠 파일이 빌드하는 동안 변경 한 경우에만 프로젝트의 이름을 가진 텍스트 파일을 작성합니다 하지만 git repo를 만들지 않고 git 명령을 사용하여 스크립트를 실행하여 병든 변경 사항이 있는지 확인할 수 있습니까? –

+0

불행히도 아니요,이 회사는 TFS 만 사용하고 있습니다. 또한 TFS에서도 동일한 작업을 수행 할 수 있지만 VCS를 사용하여 변경 사항을 식별하고 싶지는 않습니다. 변경 사항을 프로젝트에 다시 매핑해야 제품 이름을 식별 할 수 있기 때문입니다. MSBuild 대상을 사용하는 경우 프로젝트의 내용이 변경되면 이미 프로젝트에 대한 세부 정보가 있습니다. –

+0

MS 빌드에 대한 지식이 좋지 않아서 도울 수는 없지만, 내 다른 감각적 인 느낌은 툴툴 거리거나 꿀꺽 꿀꺽 마시는 것입니다. –

답변

2

나는 그것을 알아 냈다. ,

 <Target Name="ContentFilesUpdated" AfterTargets="_CopyOutOfDateSourceItemsToOutputDirectory" Condition="'$(IsDesktopBuild)' == 'False'"> 
    <WriteLinesToFile 
     File="@(ProductChangeFile)" 
     Lines="$(ProjectName)" 
     Overwrite="false" 
     Encoding="Unicode" Condition="!Exists('@(ProductChangeFile)')"/>