[c#] 컴파일 타임에 응용 프로그램 폴더로 파일 복사

프로젝트 .\bin\debug\에서 컴파일 할 때 폴더 로 복사하고 싶은 파일이 있다면 프로젝트 의 루트에 넣어야하는 것 같습니다. 하위 폴더에 넣는 것은 .\bin\debug\저장된 동일한 구조 의 폴더 로 복사하는 것처럼 보입니다 .

이것을 피할 수있는 방법이 있습니까?

그냥 명확하게하기 위해 : 나는 경우 MyFirstConfigFile.txtMySecondConfigFile.txtA의 ConfigFiles폴더를 내가 그들의 설정 출력에 복사복사를 … , 그들은이 나타납니다 .\bin\debug\ConfigFiles\폴더. .\bin\debug\폴더 에 표시되기를 원합니다 .



답변

빌드 후 이벤트로이를 수행 할 수 있습니다. 컴파일시 파일을 작업 없음으로 설정 한 다음 매크로에서 파일을 원하는 디렉터리로 복사합니다.

다음은 Configuration이라는 디렉토리의 모든 파일을 루트 빌드 폴더에 복사하여 작동 할 것이라고 생각하는 빌드 후 매크로입니다.

copy $(ProjectDir)Configuration\* $(ProjectDir)$(OutDir)


답변

csproj에서 MSBuild 작업을 사용할 수 있습니다.

csproj 파일 편집

  <Target Name="AfterBuild">
    <Copy SourceFiles="$(OutputPath)yourfiles" DestinationFolder="$(YourVariable)" ContinueOnError="true" />
  </Target>


답변

솔루션 탐색기의 루트에 파일 또는 링크를 넣은 다음 파일 속성을 설정할 수도 있습니다.

Build action = Content

Copy to Output Directory = Copy if newer (예)

링크의 경우 Windows 탐색기에서 Shift 및 Ctrl 키를 누른 상태에서 솔루션 탐색기로 파일을 끌어옵니다.

여기에 이미지 설명 입력


답변

개인적으로 저는 이런 방식을 선호합니다.

.csproj추가 할 수정

<ItemGroup>
    <ContentWithTargetPath Include="ConfigFiles\MyFirstConfigFile.txt">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <TargetPath>%(Filename)%(Extension)</TargetPath>
    </ContentWithTargetPath>
</ItemGroup>


답변

하위 폴더에서 하위 폴더로 복사

 if not exist "$(ProjectDir)$(OutDir)subfolder" mkdir "$(ProjectDir)$(OutDir)subfolder"

 copy "$(ProjectDir)subfolder\"  "$(ProjectDir)$(OutDir)subfolder\"


답변

프로젝트에서 빌드 후 이벤트를 사용하려고합니다. 거기에서 출력을 지정할 수 있으며 프로젝트 경로, 항목 이름 등과 같이 자주 사용되는 항목에 대한 매크로 값이 있습니다.


답변

프로젝트의 PostBuild 이벤트를 사용할 수 있습니다. 빌드가 완료된 후 DOS 배치 파일을 실행하고 원하는 파일을 원하는 폴더에 복사 할 수 있습니다.