ints
1
- 메인 프로젝트와 참조중인 공유 프로젝트가 있습니다
MainProject
└── ResourceFolder
ㅤ├──A
ㅤㅤ├── resource1
ㅤㅤ└── resource2
ㅤ├── B
ㅤㅤ├── resource1
ㅤㅤ└── resource2
ㅤ└── C
ㅤㅤ├── resource1
ㅤㅤ└── resource2
SharedProject
└── ResourceFolder
ㅤ├── A
ㅤㅤ├── resource3
ㅤㅤ└── resource4
ㅤ├── B
ㅤㅤ├── resource3
ㅤㅤ└── resource4
ㅤ└── C
ㅤㅤ├── resource3
ㅤㅤ└── resource4
디렉토리가 이렇게 되어 있을 때, 수동으로 일일히 지정하지 않고 출력 디렉토리가 아래처럼 되게 복사하는 방법이 있을까요? 방법이 잘 안 떠오르네요.
출력 디렉토리
└── ResourceFolder
ㅤ├── A
ㅤㅤ├── resource1
ㅤㅤ├── resource2
ㅤㅤ├── resource3
ㅤㅤ└── resource4
ㅤ├── B
ㅤㅤ├── resource1
ㅤㅤ├── resource2
ㅤㅤ├── resource3
ㅤㅤ└── resource4
ㅤ└── C
ㅤㅤ├── resource1
ㅤㅤ├── resource2
ㅤㅤ├── resource3
ㅤㅤ└── resource4
- 메인 프로젝트에서 임베드에 해당하는 위치의 공유 프로젝트 리소스를 마찬가지로 임베드하려고 다음과 같이 했습니다
솔루션 디렉토리
└── MainProject
ㅤ└── MainProject.csproj
└── SharedProject
ㅤ└── …
[MainProject.csproj]
<EmbeddedResource Include=“..\공유프로젝트폴더\EmbeddedResourceFolder\*.*”></EmbeddedResource>
그런데 이렇게 하니까 해당 위치에 있는 파일이 IDE에서 메인 프로젝트의 최상위 위치에 이상하게 섞이게 되더라고요
<Visible>false</Visible> 을 줘서 일단 안보이게는 했는데, 빌드한 뒤 임베드 리소스의 이름을 확인해보니
제가 예상하는
“공유프로젝트.EmbeddedResourceFolder.파일명.확장자”
가 아니라
“메인프로젝트.파일명.확장자”
가 됩니다. 이름이 경로대로 만들어진다고 생각했는데 왜 이러는 걸까요? 혹은 직접 생성 방식을 직접 정의하는 방법이 있을까요?
1개의 좋아요
ints
3
아직 아무것도 구성하지 않아서 $(TargetPath) 뿐입니다
1개의 좋아요
nyjin
4
startup 프로젝트의 csproj를 편집하여 대상 프로젝트의 리소스를 링크해서 output을 만들어내거나 빌드 후 특정 폴더의 파일들을 복사하는 방식으로 해결이 가능할 것 같은데 테스트가 필요하겠네요.
리소스 폴더 링크
<Content Include="..\..\MyContentFiles\**\*.*">
<Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
빌드 후 특정 폴더 복사
<ItemGroup>
<ExtraContent Include="$(MSBuildProjectDirectory)\..\..\MyContentFiles\**" />
</ItemGroup>
<Target Name="AfterBuild">
<Copy
SourceFiles="@(ExtraContent)"
DestinationFiles="@(ExtraContent->'$(TargetDir)\%(RecursiveDir)%(Filename)%(Extension)')"
SkipUnchangedFiles="true" />
</Target>
참조
3개의 좋아요
nyjin
7
해결 되셨다니 다행이네요~
다른 방법도 있네요. 취향껏 하시면 될 것 같습니다.
<ItemGroup>
<ContentWithTargetPath Include="Contents/**/*.*"
TargetPath="Contents/%(Filename)%(Extension)"
CopyToOutputDirectory="PreserveNewest" />
</ItemGroup>
참고
3개의 좋아요