zoukankan      html  css  js  c++  java
  • Prism 问题总结一: 在模块中引用公用程序集出错

    问题描述:

    通常我们在各子模块中都会用到应用程序公用的程序集,如:“Touch.Modules.ModuleA ”会引用“Touch.Infrastructure”

    image

    在默认情况下,它会将“Touch.Infrastructure”复制到“Touch.Modules.ModuleA ”的生成目录(因为是Module所以我是让他生成到一个单独的目录中:image )。而执行程序“Touch” (程序入口)本身也引用了“Touch.Infrastructure”  这样就会导致2个地方都有“Touch.Infrastructure”,在Prism 中加载模块时就会报如下错误:

    An exception occurred while trying to create region objects.
        - The most likely causing exception was: 'System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> Microsoft.Practices.Prism.Regions.Behaviors.RegionCreationException: An exception occurred while creating a region with name 'NavRegion'. The exception was: Microsoft.Practices.ServiceLocation.ActivationException: Activation error occured while trying to get instance of type AutoPopulateExportedViewsBehavior, key "" ---> System.InvalidOperationException: 序列包含一个以上的元素
       在 System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
       在 Microsoft.Practices.Prism.MefExtensions.MefServiceLocatorAdapter.DoGetInstance(Type serviceType, String key)
       在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
       --- 内部异常堆栈跟踪的结尾 ---
       在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
       在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType)
       在 Microsoft.Practices.Prism.Regions.RegionBehaviorFactory.CreateFromKey(String key)
       在 Microsoft.Practices.Prism.Regions.RegionAdapterBase`1.AttachDefaultBehaviors(IRegion region, T regionTarget)
       在 Microsoft.Practices.Prism.Regions.RegionAdapterBase`1.Initialize(T regionTarget, String regionName)
       在 Microsoft.Practices.Prism.Regions.RegionAdapterBase`1.Microsoft.Practices.Prism.Regions.IRegionAdapter.Initialize(Object regionTarget, String regionName)
       在 Microsoft.Practices.Prism.Regions.Behaviors.DelayedRegionCreationBehavior.CreateRegion(DependencyObject targetElement, String regionName).  ---> Microsoft.Practices.ServiceLocation.ActivationException: Activation error occured while trying to get instance of type AutoPopulateExportedViewsBehavior, key "" ---> System.InvalidOperationException: 序列包含一个以上的元素
       在 System.Linq.Enumerable.Single[TSource](IEnumerable`1 source)
       在 Microsoft.Practices.Prism.MefExtensions.MefServiceLocatorAdapter.DoGetInstance(Type serviceType, String key)
       在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
       --- 内部异常堆栈跟踪的结尾 ---
       在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key)
       在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType)
       在 Microsoft.Practices.Prism.Regions.RegionBehaviorFactory.CreateFromKey(String key)
       在 Microsoft.Practices.Prism.Regions.RegionAdapterBase`1.AttachDefaultBehaviors(IRegion region, T regionTarget)
       在 Microsoft.Practices.Prism.Regions.RegionAdapterBase`1.Initialize(T regionTarget, String regionName)
       在 Microsoft.Practices.Prism.Regions.RegionAdapterBase`1.Microsoft.Practices.Prism.Regions.IRegionAdapter.Initialize(Object regionTarget, String regionName)
       在 Microsoft.Practices.Prism.Regions.Behaviors.DelayedRegionCreationBehavior.CreateRegion(DependencyObject targetElement, String regionName)
       --- 内部异常堆栈跟踪的结尾 ---
       在 Microsoft.Practices.Prism.Regions.Behaviors.DelayedRegionCreationBehavior.CreateRegion(DependencyObject targetElement, String regionName)
       在 Microsoft.Practices.Prism.Regions.Behaviors.DelayedRegionCreationBehavior.TryCreateRegion()
       在 Microsoft.Practices.Prism.Regions.Behaviors.DelayedRegionCreationBehavior.OnUpdatingRegions(Object sender, EventArgs e)
       --- 内部异常堆栈跟踪的结尾 ---
       在 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       在 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
       在 System.Delegate.DynamicInvokeImpl(Object[] args)
       在 System.Delegate.DynamicInvoke(Object[] args)
       在 Microsoft.Practices.Prism.Events.WeakDelegatesManager.Raise(Object[] args)
       在 Microsoft.Practices.Prism.Regions.RegionManager.UpdateRegions()'.
        But also check the InnerExceptions for more detail or call .GetRootException().

    解决办法

    将“Touch.Modules.ModuleA ”引用的“Touch.Infrastructure”,复制本地设置为“false”就对了。

    image

  • 相关阅读:
    html marque属性说明
    asp.net中转换web user control为custom web control
    免费的挖掘软件推荐(转)
    成为数据分析师的3个技能(转)
    基于数据库营销的433定律(转)
    ODS项目常见问题
    visual studio 2010 professional , premium, ultimate各版本功能对比
    C++异常处理之二 (How a VC++ compiler implements exception handling)
    仿函数(又名函数对象)与仿函数配接器
    Windows 异常处理(Structured Exception Handling)
  • 原文地址:https://www.cnblogs.com/jiguixin/p/2817696.html
Copyright © 2011-2022 走看看