WCSF1.1 Error in examples

Topics: Web Client Software Factory, User Forum
Jun 22, 2007 at 3:08 PM
Hi!
I set new virtual environment - Windows Server 2003 EE sp1, VS2005 prof sp1, all dependencies for WCSF were installed.
Everithing seems to be ok, but it's only when I create new WebSite or WAP. The problem is in examples provided with WCSF.

ViewPresenter example:
Adding new business module or view (with presenter) crashes. Stack trace:
Microsoft.Practices.WizardFramework.WizardExecutionException: The wizard failed to execute. The error was:
Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Practices.RecipeFramework.Extensions.DteWrapper.DteProjectModel.get_ProjectPath()
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateModulePagePresenter.ValidateModuleWebFolderNotExist(Object sender, ValidationEventArgs e)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateModulePagePresenter.OnModuleFolderNameOnWebSiteChanged(Object sender, ValidationEventArgs e)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateModulePage.moduleFolderNameTextChanged(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnTextChanged(EventArgs e)
at System.Windows.Forms.TextBoxBase.OnTextChanged(EventArgs e)
at System.Windows.Forms.Control.set_Text(String value)
at System.Windows.Forms.TextBoxBase.set_Text(String value)
at System.Windows.Forms.TextBox.set_Text(String value)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateModulePage.ShowModuleFolderName(String webSiteModuleFolder)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateModulePagePresenter.OnViewReady()
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateModulePage.InitializePresenterAndModel()
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateModulePage.OnLoad(EventArgs e)
at System.Windows.Forms.UserControl.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
at System.Windows.Forms.Control.set_Visible(Boolean value)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at Microsoft.WizardFramework.WizardForm.Start(IWin32Window parent)
at Microsoft.Practices.WizardFramework.WizardGatheringService.Microsoft.Practices.Common.Services.IValueGatheringService.Execute(XmlElement data, Boolean allowSuspend)
--- End of inner exception stack trace ---
at Microsoft.Practices.WizardFramework.WizardGatheringService.Microsoft.Practices.Common.Services.IValueGatheringService.Execute(XmlElement data, Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.VisualStudio.Templates.TemplateGatheringService.Microsoft.Practices.Common.Services.IValueGatheringService.Execute(XmlElement serviceData, Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.Recipe.Execute(Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(String recipe, IAssetReference reference, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.GuidancePackage.ExecuteFromTemplate(String recipe, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate.ExecuteRecipe(Boolean executeActions)
at Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate.RunStarted(Object automationObject, Dictionary`2 replacementsDictionary, WizardRunKind runKind, Object[] customParams)

ModuleQuickStart example:
Adding new view (with presenter) is ok, but adding business module crashes on creating a .csproj file. Stack trace:
Microsoft.Practices.RecipeFramework.ActionExecutionException: An exception occurred during the binding of reference or execution of recipe CreateModuleCS. Error was: Action AddCompositeWebAssemblyReferencesToModule failed to execute:
Folder C:\Program Files\Microsoft Web Client Factory\Source Code\QuickStarts\Module\Library does not exist.
You can remove the reference to this recipe through the Guidance Package Manager. ---> System.InvalidOperationException: Folder C:\Program Files\Microsoft Web Client Factory\Source Code\QuickStarts\Module\Library does not exist
at Microsoft.Practices.RecipeFramework.Extensions.Actions.VisualStudio.AddAssembliesReferenceAction.BuildAssembliesPathList(Boolean gaced)
at Microsoft.Practices.RecipeFramework.Extensions.Actions.VisualStudio.AddAssembliesReferenceAction.Execute()
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName, Dictionary`2 inputValues)
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName)
at Microsoft.Practices.RecipeFramework.Extensions.Coordinators.ConditionalCoordinator.Run(Dictionary`2 declaredActions, XmlElement coordinationData)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
--- End of inner exception stack trace ---
at Microsoft.Practices.RecipeFramework.Recipe.UndoExecutedActionsAndRethrow(Exception ex)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
at Microsoft.Practices.RecipeFramework.Recipe.Execute(Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(String recipe, IAssetReference reference, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.GuidancePackage.ExecuteFromTemplate(String recipe, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate.ExecuteRecipe(Boolean executeActions)
at Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate.RunFinished()

GlobalBank example: throws the same error as ViewPresenterQuickStart during any action of adding.

I think that the problem is in solution folder structure, because a new project has two directories "Modules" and "WebSites" as ModuleQuickStart has and we are able to add new view and presenters. In ViewPresenterQuickStart no such folders and we can't do anything.

Explain please the problem and the solution (if it exists).
Thanks a lot!

BR, Oleg
Developer
Jun 22, 2007 at 8:58 PM
Hi Oleg, I have been researching about these issues, and here is what I came up with:

For the case of the Module Quickstart, the error raises because the solution is missing the Library folder. A possible workaround is to copy the Library folder (which you can find in any WCSF solution you create) to the Module Quickstart solution folder.

This is happening because the recipe’s action AddCompositeWebAssemblyReferencesToModule has to work with a LibraryPathArgument, and since it’s missing in Module’s solution, it crashes. You can take a look in the WebClientFactory Guidance Package solution, in CreateWebClientFactoryModuleCommon.xml, and see this piece of code (which shows that the action needs this LibraryPathArgument):
    <Action Name="AddCompositeWebAssemblyReferencesToModule"
                                                 Type="AddAssembliesReferenceAction">
      <Input Name="FileNames" RecipeArgument="CompositeWebDlls"/>
      <Input Name="ReferringProject" RecipeArgument="ModuleProject"/>
      <Input Name="AssembliesPath" RecipeArgument="LibraryPathArgument"/>
    </Action>
For the ViewPresenter Quickstart:

The “add view presenter” recipe is missing because inside the UI Web project, the “vwd.webinfo” is missing. You can add it (by copying it from a fresh new WCSF project) and you’ll be able to use the “add view presenter” recipes. If the Library folder is missing, copy it to the solution folder.

You also need to add these lines to the ViewPresenterQuickStart.sln file:
      GlobalSection(ExtensibilityGlobals) = postSolution
               RootNamespace = ViewPresenterQuickStart
               IsWCSFSolution = True
      EndGlobalSection

Note: This will allow you to execute the Add Business Module recipe but the Add View (with presenter) will still crash. Later I will post about how to solve that issue too.

Let me know if this helps,

Ezequiel Jadib
http://staff.southworks.net/blogs/ejadib
Jun 23, 2007 at 3:46 PM
Thanks, Ezequiel, for your help!
Module Quickstart is working correctly after copying the Library folder.

ViewPresenterQuickStart now allows add Business module successfully, but adding Foundational mudule crashes:
Microsoft.Practices.RecipeFramework.ActionExecutionException: An exception occurred during the binding of reference or execution of recipe CreateFoundationalModuleCS. Error was: Action UpdateWebConfigModules failed to execute:
Object reference not set to an instance of an object..
You can remove the reference to this recipe through the Guidance Package Manager. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Practices.WebClientFactory.WebConfigXmlParseModuleInfoStore.SaveConfigurationElement(String filePath, ModuleConfigurationElement moduleConfig, String xpath)
at Microsoft.Practices.WebClientFactory.WebConfigXmlParseModuleInfoStore.AddModuleConfigurationElement(ModuleConfigurationElement moduleConfig)
at Microsoft.Practices.WebClientFactory.Actions.UpdateModulesConfigurationAction.Execute()
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName, Dictionary`2 inputValues)
at Microsoft.Practices.RecipeFramework.Recipe.Microsoft.Practices.RecipeFramework.Services.IActionExecutionService.Execute(String actionName)
at Microsoft.Practices.RecipeFramework.Extensions.Coordinators.ConditionalCoordinator.Run(Dictionary`2 declaredActions, XmlElement coordinationData)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
--- End of inner exception stack trace ---
at Microsoft.Practices.RecipeFramework.Recipe.UndoExecutedActionsAndRethrow(Exception ex)
at Microsoft.Practices.RecipeFramework.Recipe.ExecuteActions(IDictionaryService readOnlyArguments, IDictionaryService arguments, ITypeResolutionService resolution)
at Microsoft.Practices.RecipeFramework.Recipe.Execute(Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(String recipe, IAssetReference reference, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.GuidancePackage.ExecuteFromTemplate(String recipe, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate.ExecuteRecipe(Boolean executeActions)
at Microsoft.Practices.RecipeFramework.VisualStudio.Templates.UnfoldTemplate.RunFinished()


Finally, as you said, adding a new view still crashes, but with another error:
Microsoft.Practices.WizardFramework.WizardExecutionException: The wizard failed to execute. The error was:
Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateViewPagePresenter.ValidateFilesNotExist(Object sender, ValidationEventArgs e)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateViewPagePresenter.OnViewNameChanged(Object sender, ValidationEventArgs e)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateViewPage.viewNameTextBoxTextChanged(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnTextChanged(EventArgs e)
at System.Windows.Forms.TextBoxBase.OnTextChanged(EventArgs e)
at System.Windows.Forms.Control.set_Text(String value)
at System.Windows.Forms.TextBoxBase.set_Text(String value)
at System.Windows.Forms.TextBox.set_Text(String value)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateViewPage.ShowViewName(String viewName)
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateViewPagePresenter.OnViewReady()
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateViewPage.InitializePresenterAndModel()
at Microsoft.Practices.WebClientFactory.CustomWizardPages.CreateViewPage.OnLoad(EventArgs e)
at System.Windows.Forms.UserControl.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.SafeNativeMethods.ShowWindow(HandleRef hWnd, Int32 nCmdShow)
at System.Windows.Forms.Control.SetVisibleCore(Boolean value)
at System.Windows.Forms.Form.SetVisibleCore(Boolean value)
at System.Windows.Forms.Control.set_Visible(Boolean value)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Form.ShowDialog(IWin32Window owner)
at Microsoft.WizardFramework.WizardForm.Start(IWin32Window parent)
at Microsoft.Practices.WizardFramework.WizardGatheringService.Microsoft.Practices.Common.Services.IValueGatheringService.Execute(XmlElement data, Boolean allowSuspend)
--- End of inner exception stack trace ---
at Microsoft.Practices.WizardFramework.WizardGatheringService.Microsoft.Practices.Common.Services.IValueGatheringService.Execute(XmlElement data, Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.Recipe.Execute(Boolean allowSuspend)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(String recipe, IAssetReference reference, IDictionary arguments)
at Microsoft.Practices.RecipeFramework.GuidancePackage.Execute(IAssetReference reference)
at Microsoft.Practices.RecipeFramework.RecipeReference.OnExecute()
at Microsoft.Practices.RecipeFramework.AssetReference.Execute()
at Microsoft.Practices.RecipeFramework.VisualStudio.RecipeMenuCommand.OnExec()
at Microsoft.Practices.RecipeFramework.VisualStudio.AssetMenuCommand.Invoke()

Looking forward to seeing your next posts about it. It would really help me to demonstrate all features of WCSF to our team.
BR,
Oleg
Jun 26, 2007 at 1:33 PM
Edited Jun 26, 2007 at 1:40 PM
I was able to fix the remaining issues in ViewPresenter by following these steps:

1) Since the WebUI’s web.config had missing many directives, I copied one from a fresh project and adapted it. Here’s how it looks now (you should be able to copy it and it should work fine):

(note: I had to remove comments and lines in order to make it fit.)

<?xml version="1.0"?><configuration><configSections><sectionGroup name="compositeWeb"><section name="modules" type="Microsoft.Practices.CompositeWeb.Configuration.ModulesConfigurationSection, Microsoft.Practices.CompositeWeb"/><section name="authorization" type="Microsoft.Practices.CompositeWeb.Configuration.AuthorizationConfigurationSection, Microsoft.Practices.CompositeWeb"/></sectionGroup><section name="securityConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings, Microsoft.Practices.EnterpriseLibrary.Security, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/><section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/><section name="exceptionHandling" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration.ExceptionHandlingSettings, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/></configSections><appSettings><add key="QuickStartName" value="View-Presenter (with Application Controller) QuickStart"/><add key="QuickStartDescription" value="This QuickStart demonstrates how to implement the View-Presenter pattern and an Application Controller without using ObjectBuilder."/></appSettings><connectionStrings/><compositeWeb><modules><module name="ViewPresenter.Customers" assemblyName="ViewPresenterQuickStart.ViewPresenter.Customers" virtualPath="~/"/></modules></compositeWeb><securityConfiguration defaultAuthorizationInstance="RuleProvider" defaultSecurityCacheInstance=""><authorizationProviders><add type="Microsoft.Practices.EnterpriseLibrary.Security.AuthorizationRuleProvider, Microsoft.Practices.EnterpriseLibrary.Security, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" name="RuleProvider"><rules></rules></add></authorizationProviders></securityConfiguration><loggingConfiguration name="Logging Application Block" tracingEnabled="true" defaultCategory="General" logWarningsWhenNoCategoriesMatch="true"><listeners><add source="Enterprise Library Logging" formatter="Text Formatter" log="Application" machineName="" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FormattedEventLogTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FormattedEventLogTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" name="Formatted EventLog TraceListener"/></listeners><formatters><add template="Timestamp: {timestamp}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;EventId: {eventid}&#xA;Severity: {severity}&#xA;Title:{title}&#xA;Machine: {machine}&#xA;Application Domain: {appDomain}&#xA;Process Id: {processId}&#xA;Process Name: {processName}&#xA;Win32 Thread Id: {win32ThreadId}&#xA;Thread Name: {threadName}&#xA;Extended Properties: {dictionary({key} - {value}&#xA;)}" type="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" name="Text Formatter"/></formatters><categorySources><add switchValue="All" name="General"><listeners><add name="Formatted EventLog TraceListener"/></listeners></add></categorySources><specialSources><allEvents switchValue="All" name="All Events"/><notProcessed switchValue="All" name="Unprocessed Category"/><errors switchValue="All" name="Logging Errors & Warnings"><listeners><add name="Formatted EventLog TraceListener"/></listeners></errors></specialSources></loggingConfiguration><exceptionHandling><exceptionPolicies><add name="GlobalExceptionLogger"><exceptionTypes><add type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" postHandlingAction="None" name="Exception"><exceptionHandlers> <add logCategory="General" eventId="100" severity="Error" title="Enterprise Library Exception Handling" formatterType="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.TextExceptionFormatter, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" priority="0" type="Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.LoggingExceptionHandler, Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" name="Logging Handler"/></exceptionHandlers></add></exceptionTypes></add></exceptionPolicies></exceptionHandling><system.web><compilation debug="true"><assemblies><add assembly="System.Management, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/><add assembly="System.Configuration.Install, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/><add assembly="System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/></assemblies></compilation><authentication mode="Windows"/><customErrors mode="RemoteOnly"><error statusCode="403" redirect="~/Errors/AccessDenied.htm"/></customErrors><siteMap defaultProvider="DefaultSiteMapProvider" enabled="true"><providers><add name="DefaultSiteMapProvider" type="Microsoft.Practices.CompositeWeb.Providers.ModuleSiteMapProvider, Microsoft.Practices.CompositeWeb" securityTrimmingEnabled="true"/></providers></siteMap><pages styleSheetTheme="QuickStart"/><httpModules><add name="WebClientAuthorizationModule" type="Microsoft.Practices.CompositeWeb.Authorization.WebClientAuthorizationModule, Microsoft.Practices.CompositeWeb"/><add name="ExceptionLoggerHttpModule" type="Microsoft.Practices.CompositeWeb.EnterpriseLibrary.ExceptionLogger, Microsoft.Practices.CompositeWeb.EnterpriseLibrary"/></httpModules></system.web></configuration>



2) Then I added this to my ViewPresenter.Customers.csproj file:

<ProjectExtensions>
<VisualStudio>
<UserProperties IsModuleProject="True" />
</VisualStudio>
</ProjectExtensions>



3) I also needed to add the references in the ViewPresenter.Customers module in order to be able to compile my solution. (You can find them in "QuickStarts\ViewPresenter\Library\")


After following these steps everything began working ok.

Hope it helps!

Luciano
http://staff.southworks.net/lpanaro