I am facing problem ( Important to notice that the debugger doesn't hit CivicaHousingRepairsModule at all .... If I insert a breakpoint in the first line ... nothing is hit.) since last 2 days without any clue. I have created sample application using Silverlight 4,PRISM 4.0 and MEF. Which contian two modules as per following.
//Module 1
namespace Civica.Housing.Security
{
[ModuleExport(typeof(CivicaHousingSecurityModule),InitializationMode = InitializationMode.OnDemand)]
public class CivicaHousingSecurityModule:IModule
{
private readonly IRegionManager _regionManager;
[ImportingConstructor] //MEF magic to for resolving all the DI
public CivicaHousingSecurityModule(IRegionManager regionManager, IAuthenticationService authenticationService)
{
regionManager.CheckForNull("regionManager");
_regionManager = regionManager;
}
#region IModule Implementation
public void Initialize()
{
}
#endregion
}
}
//Module 2
namespace Civica.Housing.Repairs
{
[ModuleExport(typeof(CivicaHousingRepairsModule), InitializationMode = InitializationMode.OnDemand)]
public class CivicaHousingRepairsModule : IModule
{
private readonly IRegionManager _regionManager;
#region Constructor
[ImportingConstructor]
public CivicaHousingRepairsModule(IRegionManager regionManager, IAuthenticationService authenticationService)
{
regionManager.CheckForNull("regionManager");
_regionManager = regionManager;
}
#endregion
#region IModule Implementation
public void Initialize()
{
_regionManager.RegisterViewWithRegion(RegionNames.ContentRegion, typeof(TestView));
}
#endregion
}
}
Now following is the code for regestring Module (ModuleCatalog.xaml).
<Modularity:ModuleCatalog xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:Modularity="clr-
namespace:Microsoft.Practices.Prism.Modularity;assembly=Microsoft.Practices.Prism">
<Modularity:ModuleInfo Ref="Civica.Housing.Security.xap" InitializationMode="OnDemand"
ModuleName="CivicaHousingSecurityModule" />
<Modularity:ModuleInfo Ref="Civica.Housing.Repairs.xap" InitializationMode="OnDemand"
ModuleName="CivicaHousingRepairsModule" />
</Modularity:ModuleCatalog>
Now following is the code for Bootstrapper
public class CivicaHousingBootstrapper : MefBootstrapper
{
private const string ModuleCatalogUri =
"/Civica.Housing.App;component/ModulesCatalog.xaml";
.
.
.
protected override Microsoft.Practices.Prism.Modularity.IModuleCatalog CreateModuleCatalog()
{
var moduleCatalog=Microsoft.Practices.Prism.Modularity.ModuleCatalog.CreateFromXaml
(new Uri(ModuleCatalogUri,
UriKind.Relative));
return moduleCatalog;
}
.
.
.
}
PROBLEM:
When I navigate from one module (Security) to another (Repairs) then it will give me the following Error
Webpage error details
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR
2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E;
Tablet PC 2.0)
Timestamp: Wed, 22 Feb 2012 13:18:00 UTC
Message: Unhandled Error in Silverlight Application
Code: 4004
Category: ManagedRuntimeError
Message: Microsoft.Practices.Prism.Modularity.ModuleInitializeException: An exception
occurred while initializing module 'CivicaHousingRepairsModule'.
- The exception message was: The composition remains unchanged. The changes were rejected
because of the following error(s): The composition produced multiple composition errors, with 3
root causes. The root causes are provided below. Review the CompositionException.Errors property
for more detailed information.
1) More than one export was found that matches the constraint '((exportDefinition.ContractName ==
"Civica.Housing.Services.IRepairsDataService") AndAlso (exportDefinition.Metadata.ContainsKey
("ExportTypeIdentity") AndAlso "Civica.Housing.Services.IRepairsDataService".Equals
(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))'.
Resulting in: Cannot set import 'Civica.Housing.Security.ViewModels.DashboardViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")'
on part 'Civica.Housing.Security.ViewModels.DashboardViewModel'.
Element: Civica.Housing.Security.ViewModels.DashboardViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")
--> Civica.Housing.Security.ViewModels.DashboardViewModel --> AssemblyCatalog
(Assembly="Civica.Housing.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
2) More than one export was found that matches the constraint '((exportDefinition.ContractName ==
"Civica.Housing.Services.IRepairsDataService") AndAlso (exportDefinition.Metadata.ContainsKey
("ExportTypeIdentity") AndAlso "Civica.Housing.Services.IRepairsDataService".Equals
(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))'.
Resulting in: Cannot set import 'Civica.Housing.Security.ViewModels.ShortcutViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")'
on part 'Civica.Housing.Security.ViewModels.ShortcutViewModel'.
Element: Civica.Housing.Security.ViewModels.ShortcutViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")
--> Civica.Housing.Security.ViewModels.ShortcutViewModel --> AssemblyCatalog
(Assembly="Civica.Housing.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
3) More than one export was found that matches the constraint '((exportDefinition.ContractName ==
"Civica.Housing.Services.IRepairsDataService") AndAlso (exportDefinition.Metadata.ContainsKey
("ExportTypeIdentity") AndAlso "Civica.Housing.Services.IRepairsDataService".Equals
(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))'.
Resulting in: Cannot set import 'Civica.Housing.Security.ViewModels.HeaderViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")'
on part 'Civica.Housing.Security.ViewModels.HeaderViewModel'.
Element: Civica.Housing.Security.ViewModels.HeaderViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")
--> Civica.Housing.Security.ViewModels.HeaderViewModel --> AssemblyCatalog
(Assembly="Civica.Housing.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
Check the InnerException property of the exception for more information. If the exception
occurred
while creating an object in a DI container, you can exception.GetRootException() to help
locate the
root cause of the problem. ---> System.ComponentModel.Composition.ChangeRejectedException:
The composition remains unchanged. The changes were rejected because of the following error(s):
The composition produced multiple composition errors, with 3 root causes. The root causes are
provided below. Review the CompositionException.Errors property for more detailed information.
1) More than one export was found that matches the constraint '((exportDefinition.ContractName ==
"Civica.Housing.Services.IRepairsDataService") AndAlso (exportDefinition.Metadata.ContainsKey
("ExportTypeIdentity") AndAlso "Civica.Housing.Services.IRepairsDataService".Equals
(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))'.
Resulting in: Cannot set import 'Civica.Housing.Security.ViewModels.DashboardViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")'
on part 'Civica.Housing.Security.ViewModels.DashboardViewModel'.
Element: Civica.Housing.Security.ViewModels.DashboardViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")
--> Civica.Housing.Security.ViewModels.DashboardViewModel --> AssemblyCatalog
(Assembly="Civica.Housing.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
2) More than one export was found that matches the constraint '((exportDefinition.ContractName ==
"Civica.Housing.Services.IRepairsDataService") AndAlso (exportDefinition.Metadata.ContainsKey
("ExportTypeIdentity") AndAlso "Civica.Housing.Services.IRepairsDataService".Equals
(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))'.
Resulting in: Cannot set import 'Civica.Housing.Security.ViewModels.ShortcutViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")'
on part 'Civica.Housing.Security.ViewModels.ShortcutViewModel'.
Element: Civica.Housing.Security.ViewModels.ShortcutViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")
--> Civica.Housing.Security.ViewModels.ShortcutViewModel --> AssemblyCatalog
(Assembly="Civica.Housing.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
3) More than one export was found that matches the constraint '((exportDefinition.ContractName ==
"Civica.Housing.Services.IRepairsDataService") AndAlso (exportDefinition.Metadata.ContainsKey
("ExportTypeIdentity") AndAlso "Civica.Housing.Services.IRepairsDataService".Equals
(exportDefinition.Metadata.get_Item("ExportTypeIdentity"))))'.
Resulting in: Cannot set import 'Civica.Housing.Security.ViewModels.HeaderViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")'
on part 'Civica.Housing.Security.ViewModels.HeaderViewModel'.
Element: Civica.Housing.Security.ViewModels.HeaderViewModel..ctor
(Parameter="_iRepairsDataService", ContractName="Civica.Housing.Services.IRepairsDataService")
--> Civica.Housing.Security.ViewModels.HeaderViewModel --> AssemblyCatalog
(Assembly="Civica.Housing.Security, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
at System.ComponentModel.Composition.CompositionResult.ThrowOnErrors(AtomicComposition
atomicComposition)
at System.ComponentModel.Composition.Hosting.ExportProvider.OnExportsChanging
(ExportsChangeEventArgs e)
at System.ComponentModel.Composition.Hosting.CatalogExportProvider.OnCatalogChanging(Object
sender, ComposablePartCatalogChangeEventArgs e)
at System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.OnChanging(Object
sender, ComposablePartCatalogChangeEventArgs e)
at System.ComponentModel.Composition.Hosting.AggregateCatalog.OnChanging
(ComposablePartCatalogChangeEventArgs e)
at
System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.RaiseChangingEvent
(Lazy`1 addedDefinitions, Lazy`1 removedDefinitions, AtomicComposition atomicComposition)
at System.ComponentModel.Composition.Hosting.ComposablePartCatalogCollection.Add
(ComposablePartCatalog item)
at Microsoft.Practices.Prism.MefExtensions.Modularity.MefModuleInitializer.CreateModule
(ModuleInfo moduleInfo)
at Microsoft.Practices.Prism.Modularity.ModuleInitializer.Initialize(ModuleInfo moduleInfo)
--- End of inner exception stack trace ---
at Microsoft.Practices.Prism.Modularity.ModuleInitializer.HandleModuleInitializationError
(ModuleInfo moduleInfo, String assemblyName, Exception exception)
at Microsoft.Practices.Prism.Modularity.ModuleInitializer.Initialize(ModuleInfo moduleInfo)
at Microsoft.Practices.Prism.Modularity.ModuleManager.InitializeModule(ModuleInfo moduleInfo)
at Microsoft.Practices.Prism.Modularity.ModuleManager.LoadModulesThatAreReadyForLoad()
at Microsoft.Practices.Prism.Modularity.ModuleManager.IModuleTypeLoader_LoadModuleCompleted
(Object sender, LoadModuleCompletedEventArgs e)
at
Microsoft.Practices.Prism.MefExtensions.Modularity.MefXapModuleTypeLoader.RaiseLoadModuleComplete
d(LoadModuleCompletedEventArgs e)
at
Microsoft.Practices.Prism.MefExtensions.Modularity.MefXapModuleTypeLoader.RaiseLoadModuleComplete
d(ModuleInfo moduleInfo, Exception error)
at
Microsoft.Practices.Prism.MefExtensions.Modularity.MefXapModuleTypeLoader.HandleDownloadCompleted
(DeploymentCatalog deploymentCatalog, AsyncCompletedEventArgs e)
at
Microsoft.Practices.Prism.MefExtensions.Modularity.MefXapModuleTypeLoader.DeploymentCatalog_Downl
oadCompleted(Object sender, AsyncCompletedEventArgs e)
at System.ComponentModel.Composition.Hosting.DeploymentCatalog.OnDownloadCompleted
(AsyncCompletedEventArgs e)
at System.ComponentModel.Composition.Hosting.DeploymentCatalog.HandleOpenReadCompleted(Object
sender, OpenReadCompletedEventArgs e)
at System.Net.WebClient.OnOpenReadCompleted(OpenReadCompletedEventArgs e)
at System.Net.WebClient.OpenReadOperationCompleted(Object arg)
Line: 56
Char: 13
Code: 0
URI: http://localhost:61228/Civica.Housing.aspx
Important Note: The debugger doesn't hit CivicaHousingRepairsModule at all If I insert a
breakpoint in the first line nothing is hit.
I tried following: 1. I have set all the PRISM dll's to localcopy to false.
Please do let me know if you have faced the same problem and you have a good solution for it. Your answers or suggestions would be appreciated.
I think its becoz ur xap file doesnot exist or is in corrupt format. please delete all ur xap files from web project and then rebuild ur application module by module and then try to run your application