2017-01-16 3 views
1

주 프로젝트와 동일한 코드를 많이 사용하는 백그라운드 작업을 실행하여 백그라운드 작업을위한 새 프로젝트를 만들었습니다. 내 공유 코드에 대한 공유 프로젝트.VS2015 C# UWP 빌드 오류, 공유 프로젝트 및 백그라운드 작업

공유 코드 프로젝트에 내 공유 코드를 모두 전송 했으므로 공유 프로젝트에 대한 참조가 내 기본 프로젝트에 추가되어 프로젝트가 작동합니다.

내 공유 프로젝트에 대한 참조를 내 백그라운드 작업 프로젝트에 추가하고 솔루션을 작성하면 작동합니다 (컴파일시 작동).

마자 나는 다음과 같은 오류가 솔루션을 빌드 할 때 난 내 주요 프로젝트에 내 백그라운드 작업 프로젝트에 대한 참조를 추가 :

공개 유형은 네임 스페이스 ('BackgroundTask')를 가지고

그 다른 네임 스페이스 ('SharedCode.Functions')와 공통 접두사를 공유하지 않습니다. Windows 메타 데이터 파일 내의 모든 유형은 파일 이름이 내포하는 네임 스페이스의 하위 네임 스페이스에 있어야합니다. BackgroundTask C : \ Users \ User \ documents \ visual 스튜디오 2015 \ Projects \ Project \ BackgroundTask \ WINMDEXP

기본 프로젝트 내에서 백그라운드 프로젝트에 대한 참조를 추가하지 않으면 백그라운드 작업을 실행하려고하면 실패합니다 .

내 백그라운드 작업 프로젝트의 맨 위에는 SharedCode를 사용했습니다. 작업이 실행되면 공유 코드를 한 번 호출하면됩니다.

await SharedCode.Check();

백그라운드 작업 프로젝트는 SharedCode 프로젝트 자체에서 직접 호출되는 SharedCode.Functions를 직접 사용할 필요는 없습니다.

아이디어가 있으십니까?

그리고 단지 참조

은 공유 코드는 HTTP 요청을하고 공유 프로젝트와 런타임 구성 요소에 대한 기본 네임 스페이스 규칙이있는 것 같다 SQLite.net-PCL

답변

1

를 사용하여 로컬 데이터베이스를 업데이트합니다. (전에는 들어 보지 못했습니다.)

런타임 구성 요소 형식을 생성하는 방식으로 코드가 생성되므로 단일 루트 네임 스페이스가 있어야합니다. 이를 달성하는 가장 쉬운 방법은 도트 앞에 공통 접두사가있는 프로젝트 이름을 사용하는 것입니다.

  • MyApp를
  • SharedCode
  • BackgroundTask

당신은 (루트 네임 스페이스를 설정하고) 그들에게 전화

  • 의 MyApp라는

    그래서 대신 가진 프로젝트 (또는 MyApp.Client)

  • MyApp.Shared
  • MyApp.BackgroundTask
  • 당신이 대신 in-process background task 사용할 수있을 경우 자신을위한 일이 훨씬 간단 할 수있는 대안으로

(귀하의 작업이 무엇에 따라가.)

0

당신이 '오래된를 사용하고있는 것으로 보인다 Windows에서 사용 된 공유 '프로젝트 템플릿 8/윈도우 폰 8

프로젝트의이 종류에서

shared app

이 코드가 실제로 여기에 세 가지 프로젝트를 볼 경우에도 의미 다른 부모 프로젝트에 중복 , 두 개의 exe/dll 만 생성됩니다. 공유 프로젝트의 코드가 창과 창 전화 프로젝트에 복사됩니다.

수행하려는 작업을 수행하려면 공유 코드를 호스팅하는 일반 class library (Universal Windows), 백그라운드 작업 진입 점을 호스팅하는 Windows Runtime Component (Universal Windows) 라이브러리 및 Blank App (Universal Windows)을 간단히 만들면됩니다.

백그라운드 작업과 앱 모두 공유 클래스 라이브러리를 참조합니다.

또한 백그라운드 공유 라이브러리 (WinMD)에 모든 공유 코드를두고 응용 프로그램에서이를 소비 할 수 있습니다.