GP Dialog Doesn't Work: Location of Required Application Block Assemblies

Topics: Web Client Software Factory
Apr 10, 2007 at 3:48 PM
During the execution of the WCSF Guidance Package there is a dialog that asks you where to find the location of the required application block assemblies.

Whenever I point this to my Enterprise Library 3.0 - April 2007 Bin Directory to get new Enterprise Library 3.0 Assemblies as well as new CWAB and other assemblies I compiled against EntLib 3.0, it never copies those assemblies into the application.

My application always contains the EntLib 2.0.1 Assemblies placed in the Library Folder and the generated projects reference those 2.0.1 Assemblies. I haven't a clue where it is getting them since I am pointing to a directory that only contains 3.0 Assemblies. Does this dialog really work or is there perhaps a directory location hardcoded somewhere?

Regards,

Dave

_____________________________

David Hayden
Microsoft MVP C#
Apr 10, 2007 at 4:08 PM
This dialog definitely does not work. I renamed the folder:

C:\Program Files\Microsoft Web Client Factory\Microsoft Practices Library

to

C:\Program Files\Microsoft Web Client Factory\Microsoft Practices Library2

and told the GP that I want my assemblies pulled from here:

C:\Program Files\Microsoft Enterprise Library 3.0 - April 2007\Bin

and this is the error I got:

Microsoft.Practices.RecipeFramework.ActionExecutionException: An exception occurred during the binding of reference or execution of recipe CreateWebClientFactorySolutionWAP. Error was: Action CopyCompositeWebDlls failed to execute:
Folder C:\Program Files\Microsoft Web Client Factory\Microsoft Practices 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\Microsoft Practices Library\ does not exist
   at Microsoft.Practices.RecipeFramework.Extensions.Actions.OS.FileCopyAction.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()
	---> Microsoft.Practices.RecipeFramework.UndoActionException: Action CreateLibraryDirectory failed to perform undo operation:
The method or operation is not implemented. ---> System.Exception: The method or operation is not implemented.
   at Microsoft.Practices.RecipeFramework.Extensions.Actions.OS.CreateDirectoryAction.Undo()
   at Microsoft.Practices.RecipeFramework.Recipe.UndoExecutedActionsAndRethrow(Exception ex)
   --- End of inner exception stack trace ---

I think we need a fix on this, too :)

Regards,

Dave

_________________________

David Hayden
Microsoft MVP C#
Apr 10, 2007 at 7:55 PM
Hi David, thanks for the feedback. This is known issue. The p&p team has that logged in the database. I created an Issue as well (WorkItem #9485).

The GP is obtaining the Library path by looking at a registry key.

There are two workarounds:

  • Copy the EntLib 3 assemblies into the installation path (Microsoft Practices Library path).
  • Change the path in the registry key. (SOFTWARE\Microsoft\patterns and practices\Web Client Factory\MicrosoftPracticesLibraryBinaryPath).
Let me know if this helps,
Ezequiel Jadib
http://staff.southworks.net/blogs/ejadib
Apr 10, 2007 at 10:15 PM
Ezequiel,

Do you have a current set of instructions for installing WCSF including WAP and optional Enterprise Library 3.0 Support?

I know in the past I have come across several errors that have workarounds:

   CreateWebClientFactoryView.xml to fix Add View (with Presenter) Error
   Change to WebUI.csproj to eliminate duplicate reference issues
   The need to UnBlock Files due to Untrusted Sources

Some of these need to be done before installing the WAP Support Guidance Package which comes with its own set of instructions.

Now with Ent Lib 3.0 Support there are probably a set of instructions including the new workarounds for the Location Dialog Box.

A set of detailed instructions would be nice if we indeed need to wait for version 1.1 for a month or longer.

Regards,

Dave

_________________________

David Hayden
Microsoft MVP C#