2011-04-21 3 views
1

저는 Unity와 함께 Prism 4를 사용하고 있습니다. 나는 메인 프로젝트와 모듈을 가지고있다. 이 모듈은 Silverlight 응용 프로그램으로 만들어 지므로 별도의 xap 파일을 만듭니다.프리즘에 모듈을로드하지 않고 참조없이

문서 상태와 마찬가지로 모듈을 부트 스트 래퍼의 ConfigureModuleCatalog에로드합니다.

var moduleType = typeof (MyModule); 
this.ModuleCatalog.AddModule(
    new ModuleInfo 
    { 
     ModuleName = moduleType.Name, 
     ModuleType = moduleType.AssemblyQualifiedName, 
     InitializationMode = InitializationMode.WhenAvailable, 
    }); 

모든 것이 제대로 작동하지만 내 주 xap 파일에도 내 모듈과 관련된 dll이 포함되어 있습니다. 그래서, 나는 Copy Local = False를 모듈 참조에 설정하고 모듈 dll은 자신의 xap 파일에서만 올바르게 빌드합니다.

하지만 MyModule의 유형 정보를 얻을 수 없어서 앱이 실행되지 않습니다. 나는 FileNotFoundException을 얻는다.

수동으로 ModuleName 및 ModuleType을 입력하고 Ref = "MyModule.xap"을 ModuleInfo에 설정하면 참조를 완전히 삭제할 수 있습니다. 이것은 정상적으로 작동하지만 문제는 다음과 같습니다. 자주 만들고 동적 버전 번호를 사용합니다. 따라서 AssemblyQualifiedName은 너무 쉽게 변경됩니다. 참조가 없다면 동적으로 가져올 방법이 없습니다. AssemblyQualifiedName에서 버전 번호를 삭제하면 작동하지 않습니다.

분명히 xap 파일에서 모듈을로드하지 않고 다른 모듈을로드하는 방법이 있습니까?

답변

0

신경 끄시 고 ...

더 연구 한 후, 내 실수 어셈블리 버전에서 와일드 카드 버전을 사용하여 보인다. 많은 사이트에서 어셈블리 FILE 버전에서만 와일드 카드를 사용하고 어셈블리 버전에서는 고정 된 버전 번호를 사용하는 것이 좋습니다. 그럼 난 그냥 참조를 삭제하고 고정 버전 번호와 강력한 이름으로 모듈을 참조 할 수 있습니다.

나는이 프리즘에 너무 잠겨 있습니다. 나는 일반적으로 어셈블리 위치에 대해 생각할 때까지 그것을 파악하지 못했습니다. 저를 위해 실제 해결 된 게시물은 셰어 포인트 부분을 해결하는 것이 었습니다. 때로는 상자 밖에서 생각해야 할 때가 간다. 당신이 파일 버전에 와일드 카드를 사용할 수 없습니다처럼

업데이트

가 보이는 ... GRR ... 나는 http://autobuildversion.codeplex.com/

누구나 더 나은 가지고 있지만 그 AN-의 추가가 작동 발견 생각?

관련 문제