source

빌드 후 이벤트의 파일을 포함하기 위해 Visual Studio 'Publish' 기능을 사용하는 방법은 무엇입니까?

ittop 2023. 4. 27. 22:45
반응형

빌드 후 이벤트의 파일을 포함하기 위해 Visual Studio 'Publish' 기능을 사용하는 방법은 무엇입니까?

현재 Visual Studio 2010 'Publish' 및 MSDeploy 기능을 사용하여 웹 배포 요구 사항을 처리하려고 하지만 빌드 구성에 따라 패키지를 사용자 지정하는 문제로 장애물에 부딪혔습니다.

32비트 환경에서 개발하지만 64비트 환경을 위한 릴리스 패키지를 생성해야 하므로 'Release' 구성에서는 64비트 버전의 타사 dll을 bin 디렉토리에 복사하여 32비트 버전을 덮어쓰는 포스트 빌드 이벤트가 있습니다.'게시' 기능을 사용하면 올바른 64비트 dll이 bin 디렉터리에 복사되고 있음에도 패키지에 포함되지 않습니다.

빌드 후 이벤트 중에 bin 디렉터리에 복사된 파일을 '게시'에 포함시킬 수 있는 방법이 있습니까?

VS2010배포 패키지를 사용하여 추가 파일을 포함하는 방법은 무엇입니까?에서 비슷하지만 다른 질문에 대답했습니다.

빌드 후 이벤트를 사용하는 시나리오에서는 빌드 후 이벤트를 삭제하고 빌드 후 이벤트 대신 자신의 MSBuild 대상을 사용하여 작업을 구현하는 것이 좋습니다.아래에 다른 답변의 텍스트가 있습니다.


보낸 사람: VS2010배포 패키지를 사용하여 추가 파일을 어떻게 포함합니까?


좋은 질문입니다.방금 웹 배포 도구(MSDeploy)에 이에 대한 매우 자세한 블로그 항목을 게시했습니다. 추가 파일을 포함하거나 특정 파일을 제외한 빌드 패키지입니다.

여기 개요가 있습니다.파일을 포함한 후에 파일을 제외하는 방법도 보여줍니다.

추가 파일 포함

MSBuild에 익숙하다면 패키지에 추가 파일을 포함하는 것이 조금 어렵지만 그래도 큰 문제는 아닙니다.이렇게 하려면 패키징할 파일을 수집하는 프로세스 부분에 연결해야 합니다.해야 할 은 우가확할대상라고 합니다.CopyAllFilesToSingleFolder속성인 이대에종속있성습다니이가 있습니다.PipelinePreDeployCopyAllFilesToOneFolderDependsOn우리가 우리의 목표물을 주입할 수 있습니다.그래서 우리는 다음과 같은 이름의 대상을 만들 것입니다.CustomCollectFiles그리고 그 과정에 그것을 주입합니다.우리는 다음과 같은 방법으로 이를 달성합니다(수입 명세서 뒤에 기억).

<PropertyGroup>
  <CopyAllFilesToSingleFolderForPackageDependsOn>
    CustomCollectFiles;
    $(CopyAllFilesToSingleFolderForPackageDependsOn);
  </CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>

이렇게 하면 프로세스에 대상이 추가됩니다. 이제 대상 자체를 정의해야 합니다.웹 프로젝트의 한 단계 위에 추가 파일이라는 폴더가 있다고 가정합니다.이러한 파일을 모두 포함하려고 합니다.여기 있습니다.CustomCollectFiles목표를 정하고 그 후에 논의합니다.

<Target Name="CustomCollectFiles">
  <ItemGroup>
    <_CustomFiles Include="..\Extra Files\**\*" />

    <FilesForPackagingFromProject  Include="%(_CustomFiles.Identity)">
      <DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
    </FilesForPackagingFromProject>
  </ItemGroup>
</Target>

여기서 제가 한 일은 아이템을 만드는 것이었습니다._CustomFilesInclude 속성에서 해당 폴더와 그 아래에 있는 모든 폴더를 선택하도록 지시했습니다.그런 다음 이 항목을 사용하여 다음 항목을 채웁니다.FilesForPackagingFromProject항목. MSDeploy에서 실제로 추가 파일을 추가하는 데 사용하는 항목입니다.또한 메타데이터를 선언했습니다.DestinationRelativePath값. 패키지에 배치할 상대 경로를 결정합니다.나는 엑스트라라는 문장을 사용했습니다.Files%(RecursiveDir)%(Filename)%(Extension)여기서. 그것이 말하는 것은 그것을 여분의 파일 폴더 아래에 있는 것과 같은 패키지의 상대적인 위치에 놓으라는 것입니다.

파일 제외

VS 2010으로 만든 웹 응용 프로그램의 프로젝트 파일을 아래쪽으로 열면 줄이 나타납니다.

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

참고로 VS 내부의 프로젝트 파일을 열 수 있습니다.프로젝트 선택 프로젝트를 마우스 오른쪽 버튼으로 클릭합니다.그런 다음 언로드된 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 편집을 선택합니다.

이 명세서에는 우리가 필요로 하는 모든 대상과 작업이 포함될 것입니다.대부분의 커스터마이징은 가져오기 후에 수행해야 합니다. 확실하지 않으면 다음에 수행하십시오!따라서 제외할 파일이 있으면 항목 이름이 있습니다.ExcludeFromPackageFiles그렇게 하는 데 사용할 수 있습니다.예를 들어 Sample이라는 이름의 파일이 있다고 가정해 보겠습니다.웹 응용 프로그램에 포함되어 있지만 생성된 패키지에서 해당 파일을 제외하려는 debug.js.가져오기 문 뒤에 아래에 스니펫을 배치할 수 있습니다.

<ItemGroup>
  <ExcludeFromPackageFiles Include="Sample.Debug.xml">
    <FromTarget>Project</FromTarget>
  </ExcludeFromPackageFiles>
</ItemGroup>

이 항목을 채우겠다고 선언하면 파일이 자동으로 제외됩니다.의 사용법을 기록합니다.FromTarget메타데이터를 입력합니다.여기서는 자세히 설명하지 않겠습니다만, 항상 그것을 명시해야 합니다.

사용하여 문제에 대한 해결 방법을 찾았습니다.ExcludeFilesFromDeployment프로젝트 파일 내의 요소입니다.배포: 파일폴더 제외에서 아이디어를 얻었습니다.

따라서 성공적인 빌드 및 관련 빌드 후 단계를 수행한 후 프로젝트 디렉터리에 있는 대로 프로젝트 파일을 패키징해야 하는 경우 다음을 수행합니다.

  1. " Web" 및 "Package/Publish Web" 프로젝트 설정을
    하면 "이폴더의 "이 됩니다.

  2. 프로젝트 언로드

  3. 언로드된 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 프로젝트 구성 편집을 선택합니다.

  4. 를 .PropertyGroup "Release

  5. PropertyGroup않는 파일 및 합니다.

    <ExcludeFilesFromDeployment>*.cs;**\.svn\**\*.*;Web.*.config;*.csproj*</ExcludeFilesFromDeployment>
    <ExcludeFoldersFromDeployment>.svn;Controllers;BootstrapperTasks;Properties</ExcludeFoldersFromDeployment>
    
  6. 프로젝트 저장 및 다시 로드

당분간은 이것으로 문제가 해결되지만, 더 나은 해결책이 있다면 알려주십시오. 관련 해킹으로 인해 이상적이지 않기 때문입니다. 하지만 다시 말씀드리지만, 일반적이지 않은 배포 시나리오일 수도 있습니다.

파일 또는 폴더를 선택하고 속성 창에서 빌드 작업을 내용으로 변경합니다.

그것이 오래된 질문이라는 것을 알지만 이것들 중 어느 것도 저에게 효과가 없었습니다.

2017년 VSI에서 게시할 추가 폴더를 마우스 오른쪽 버튼으로 클릭하고 게시를 선택하여 작동했습니다.

예:

여기에 이미지 설명 입력

프로젝트에 bin 폴더(및 해당 내용)를 추가하면 파일이 게시 출력 디렉터리에 복사됩니다.

저의 문제는 전용 소프트웨어 라이센스 파일을 bin/폴더에 배치해야 하지만 배포할 때마다 수동으로 복사하고 싶지 않다는 것이었습니다.

Visual Studio 2015 Professional을 사용했습니다.

이것이 오래된 대화라는 것을 알지만, 저는 같은 일을 하려다가 우연히 발견했고, 제가 발견한 것을 여기에 추가하는 것이 도움이 될 것이라고 생각했습니다.

게시물에 추가 파일을 포함하는 것에 대한 거의 모든 기사는 다음을 추가하는 방법을 사용합니다.CopyAllFilesToSingleFolderForPackageDependsOn또는CopyAllFilesToSingleFolderForMSDeployDependsOn의목의 PropertyGroup그리고 그들은 모두 "이것을 파일의 끝에 추가했습니다..."

가 한 이고, 왜 일도 않는지 제가 이미 알고 .PropertyGroup파일의 맨 위에 있는 섹션.가 때.CopyAllFilesToSingleFolderForPackageDependsOn그 부분에서 그것은 잘 작동했습니다.

이것이 언젠가 누군가의 시간을 절약해주기를 바랍니다.

언급URL : https://stackoverflow.com/questions/3137880/how-to-get-visual-studio-publish-functionality-to-include-files-from-post-buil

반응형