2017-04-11 9 views
0

프리즘이있는 WPF 프로젝트가 있습니다. 기본적으로 하위 폴더 (PrismModules)에있는 일부 모듈을 동적으로로드하고 있습니다.clickonce에서 프로젝트 DLL의 대상으로 하위 폴더를 지정하는 방법은 무엇입니까?

응용 프로그램은 정상적으로 작동하지만 ClickOnce를 사용하여 배포하려고하면 출력 경로 구조가 무시되고 "PrismModules"하위 폴더 대신 모든 내용이 루트 폴더에 저장됩니다. 그런 다음 응용 프로그램은 해당 모듈을로드하지 않습니다.

이 제한 사항은 ClickOnce 배포의 제한 사항입니까?

Solution 
- WpfClient 
- PrismModules 
    - Module A 
    - Module B 
    - Module C 

그들은 모두 같은 루트 디렉토리에 내장되어, 모듈 A/B/:

편집

조금 더 많은 정보를 제공하려면, 여기에 어떻게 솔루션을 구성되어있다 C는 하위 폴더 PrismModules에 있습니다.

WpfClient는 모듈을 참조하지 않으며 런타임에 PrismModules 폴더를 검색하고 IModule의 구현을 포함하는 모든 DLL을로드합니다.

내가 무슨 짓을주의 :

루트에 넣어 참조 (그리고 PrismModules 폴더) 된 일부 DLL 및 동적으로로드 된 것들, 우리는 아무것도를 설정할 수 없습니다 (심지어 존재하지 않는 ClickOnce를 메뉴에서 해당. 하위 폴더 PrismModules를 만들고 당신의 모듈 의 DLL을에 링크로 추가 (ClickOnce를로 배포) 주 프로젝트에서

답변

0

것은. 내용에 "BuildAction"로 설정하고 "출력 디렉토리에 복사 "에서"항상 복사 "로 변경됩니다.

Crea 하위 폴더 PrismModules에 WpfClient를 추가하고 링크를 추가하십시오. 해당 출력 위치에서 dll을 가져옵니다 (ModuleA의 출력 위치는 무엇이든)

추가 확인 : 배포/응용 프로그램 파일 아래에 추가 된 dll은 "데이터 파일"이 아닌 "포함됨"으로 표시되어야합니다 ". 대개 VS가 올바르게합니다.

솔루션의 빌드 순서를 올바르게 설정하십시오. WpfClient는 이전 dll과 함께 새 버전의 응용 프로그램을 배포 할 수 없도록 Module X에 의존해야합니다.

단계별 :

모든 프로젝트를 빌드하십시오 (릴리스).

WpfClient를 마우스 오른쪽 단추로 클릭하고 "새 폴더 추가"를 선택하고 이름을 PrismModules로 지정합니다.

새로 만든 PrismModules 위에 마우스 오른쪽 버튼으로 클릭하여 "기존 항목 추가"를 선택하십시오. 어디서나 빌드 한 모듈 dll을 탐색하십시오. "Add"대신 "Add As Link"를 누르십시오 ("Add"오른쪽에있는 삼각형에주의하십시오).

+0

그러나 내 DLL은이 디렉토리에 방금 빌드 된 프로젝트입니다. – J4N

+0

프로젝트 구조를 이해하지 못합니다. 설명 할 수 있니? – dvorn

+0

이해가 안되는 점 : DLL을 업데이트하면 다시 복사해야한다는 의미입니까? 디버그에서 작동합니까? – J4N