VS2010 웹 배포 패키지를 사용하여 추가 파일 을 어떻게 포함합니까? 에서 비슷하지만 다른 질문에 대답했습니다 . .
귀하의 시나리오에서 빌드 후 이벤트를 사용하는 경우 빌드 후 이벤트를 삭제하고 빌드 후 이벤트 대신 고유 한 MSBuild 대상을 사용하여 작업을 구현하는 것이 좋습니다. 아래에서 다른 답변의 텍스트를 찾을 수 있습니다.
From : VS2010 웹 배포 패키지를 사용하여 추가 파일을 어떻게 포함합니까?
좋은 질문입니다. 웹 배포 도구 (MSDeploy) : 추가 파일을 포함하거나 특정 파일을 제외하는 패키지 빌드 에 이에 대한 매우 자세한 블로그 항목을 게시했습니다 .
여기에 시놉시스가 있습니다. 파일을 포함시킨 후 파일을 제외하는 방법도 보여줍니다.
추가 파일 포함
패키지에 추가 파일을 포함하는 것은 조금 더 어렵지만 MSBuild에 익숙하고이 글을 읽지 않는다면 여전히 큰 문제가 아닙니다. 이렇게하려면 패키징 할 파일을 수집하는 프로세스 부분에 연결해야합니다. 확장해야하는 대상은 CopyAllFilesToSingleFolder입니다. 이 대상에는 자체 대상을 탭하여 삽입 할 수있는 종속성 속성 PipelinePreDeployCopyAllFilesToOneFolderDependsOn이 있습니다. 따라서 CustomCollectFiles라는 대상을 만들고이를 프로세스에 삽입합니다. 다음을 통해이를 달성합니다 (import 문 이후에 기억).
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</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 속성에서 해당 폴더와 그 아래의 모든 폴더에있는 모든 파일을 선택하도록 지시했습니다. 그런 다음이 항목을 사용하여 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.js라는 파일이 있지만 생성 된 패키지에서 해당 파일을 제외하려고한다고 가정 해 보겠습니다. 해당 import 문 뒤에 아래 스 니펫을 배치 할 수 있습니다.
<ItemGroup>
<ExcludeFromPackageFiles Include="Sample.Debug.xml">
<FromTarget>Project</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
이 항목을 채우도록 선언하면 파일이 자동으로 제외됩니다. 여기에서 FromTarget 메타 데이터의 사용법을 확인하십시오. 나는 여기서 그것에 대해 다루지 않을 것이지만, 당신은 항상 그것을 명시하는 것을 알아야합니다.