좋은 질문입니다. 방금 MSDeploy (Web Deployment Tool) 에 자세한 블로그 항목을 게시했습니다 . 추가 파일을 포함하거나 특정 파일을 제외하고 빌드 패키지 .
다음은 시놉시스입니다. 파일을 포함시킨 후 파일을 제외하는 방법도 보여줍니다.
추가 파일 포함
패키지에 추가 파일을 포함시키는 것은 약간 어렵지만 MSBuild에 익숙하고 읽을 수 없다면 큰 편이 아닙니다. 이렇게하려면 패키징 할 파일을 수집하는 프로세스 부분에 연결해야합니다. 확장해야하는 대상을 CopyAllFilesToSingleFolder라고합니다. 이 대상에는 PipelinePreDeployCopyAllFilesToOneFolderDependsOn이라는 종속성 속성이 있으며이 속성을 사용하여 자체 대상을 주입 할 수 있습니다. 따라서 CustomCollectFiles라는 대상을 만들어 프로세스에 주입합니다. 우리는 이것을 다음과 같이 달성합니다 (import 문 다음에 기억하십시오).
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
그러면 대상이 프로세스에 추가되므로 이제 대상 자체를 정의해야합니다. 웹 프로젝트보다 한 수준 위에있는 Extra Files라는 폴더가 있다고 가정합니다. 해당 파일을 모두 포함하려고합니다. CustomCollectFiles 대상은 다음과 같습니다.
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\Extra Files\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
여기서 내가 한 것은 _CustomFiles 항목을 만들고 Include 속성에 해당 폴더와 그 아래의 모든 폴더에서 모든 파일을 가져 오도록 지시 한 것입니다. 우연히 해당 목록에서 무언가 를 제외 해야하는 경우에 Exclude
속성을 추가하십시오 _CustomFiles
.
그런 다음이 항목을 사용하여 FilesForPackagingFromProject 항목을 채 웁니다. 이것은 MSDeploy가 실제로 추가 파일을 추가하는 데 사용하는 항목입니다. 또한 메타 데이터 DestinationRelativePath 값을 선언했습니다. 패키지에 배치 될 상대 경로를 결정합니다. Extra Files % (RecursiveDir) % (Filename) % (Extension) 문을 여기에 사용했습니다. 말하는 것은 패키지의 Extra Files 폴더와 같은 상대 위치에 배치하는 것입니다.
파일 제외
VS 2010으로 만든 웹 응용 프로그램의 프로젝트 파일을 아래쪽으로 열면 줄이 표시됩니다.
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
BTW VS에서 프로젝트 파일을 열 수 있습니다. 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 언로드를 선택하십시오. 그런 다음 언로드 된 프로젝트를 마우스 오른쪽 단추로 클릭하고 프로젝트 편집을 선택하십시오.
이 진술에는 필요한 모든 목표와 과제가 포함됩니다. 이후에 확실하지 않은 경우 대부분의 사용자 정의는 가져 오기 후에 이루어져야합니다! 따라서 제외 할 파일이있는 경우 항목 이름 ExcludeFromPackageFiles가 있으며이를 제외하는 데 사용할 수 있습니다. 예를 들어 웹 응용 프로그램에 포함 된 Sample.Debug.xml이라는 파일이 있지만 해당 파일을 생성 된 패키지에서 제외하려는 경우를 가정 해 보겠습니다. 해당 import 문 다음에 스 니펫을 아래에 배치 할 수 있습니다.
<ItemGroup>
<ExcludeFromPackageFiles Include="Sample.Debug.xml">
<FromTarget>Project</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
이 항목을 채우면 파일이 자동으로 제외됩니다. FromTarget
여기 에서 메타 데이터 사용법을 참고 하십시오. 나는 여기에 들어 가지 않을 것이지만 항상 그것을 지정해야한다는 것을 알아야합니다.