2017-04-12 2 views
2

본질적으로 C++ 라이브러리에 대한 래퍼 인 타사 .NET 라이브러리를 사용하고 있습니다. 이 라이브러리는 NuGet 패키지가 아닙니다. 다른 아키텍처 (ARM, x86, x64) 및 관리되는 라이브러리에 대해서만 C++ 라이브러리 만 있습니다.UWP 응용 프로그램 패키지에 아키텍처 특정 파일 포함

내 프로젝트에서 관리되는 라이브러리를 참조하는 한, 나는 빌드 후 이벤트를 만든 복사하는 빌드 디렉토리에 대한 올바른 C++ 라이브러리 :

XCOPY/Y "$ (PROJECTDIR) ExternalReferences \ NoesisGUI \ UWP _ $ (플랫폼) *. * ""$ (TARGETDIR) "

내가 가진 문제는 ++ 라이브러리이 C가 배포 AppX 폴더에 복사되지 않는 것입니다, 그래서 System.DllNotFoundException를 얻을 수.

응용 프로그램 패키지에 아키텍처 특정 파일을 포함시키는 올바른 방법은 무엇입니까? 스크립트에 대한 필요가 없습니다

Project folder structure with C++ libraries

답변

0

, 그냥 프로젝트의 Content 같은 사람들을 추가 할 쉽게 :

은 C++ 라이브러리와 프로젝트 폴더 구조입니다.

먼저 외부에서 ExternalReferences 폴더를 이동하십시오. 상위 폴더 (.sln 파일이있는 곳)는 정상적으로 작동합니다.

수동 .csproj 파일을 편집하고 종료 </Project> 태그 앞에 다음을 추가 :이 계정으로는 현재를 위해 건설되고있는 플랫폼을 가지고 프로젝트의 Noesis.dll 파일을 포함합니다

<ItemGroup> 
    <Content Include="..\ExternalReferences\NoesisGUI\uwp_$(Platform)\Noesis.dll"> 
    <Link>Noesis.dll</Link> 
    </Content> 
</ItemGroup> 

.

참고 : 위의 위의 경우 ".. \"를 사용하여 상위 폴더를 사용합니다. 폴더를 다른 위치로 옮긴 경우이를 변경해야합니다.

+0

실제로 콘텐츠 제작 작업을 선택해야합니다. 그러나 이것은 3 가지 아키텍처에 대해 3 개의 다른 라이브러리가 있기 때문에 나에게는 적합하지 않습니다. 그래서 하위 폴더에 배치해야합니다. 내 질문에 내 폴더 구조를 추가했습니다. 내가 구축 할 아키텍처를 기반으로 올바른 라이브러리 만 포함시켜야합니다. – Kenshin

+0

@Kenshin "Action"Build Action을 "Content"로 설정하면 Output Directory에 "Always"로 복사 할 필요가 없어야합니다. –

+0

Copy to Output Directory 만 "Always"로 전환하면 파일이 빌드 디렉토리에 복사되었지만 배포시 AppX 디렉토리에 복사되지 않았습니다. – Kenshin