Versioning Considerations for Workflows

Workflow versioning follows the .NET Framework common language runtime assembly-level versioning guidelines. Each assembly has a version number as part of its identity. Therefore, two assemblies that differ by version number are considered by the runtime to be completely different assemblies. For more information about the .NET Framework versioning guidelines, see Assembly Versioning in the .NET Framework SDK section of the MSDN Library.

A new version of a workflow is treated as a new assembly version by the runtime, and different assembly versions can run side by side. When you deploy a new version of a workflow, all existing workflow instances should continue to run as is, using the old workflow version, and all new workflow instances are created by using the new workflow version. In this side-by-side situation, you must give special consideration to persisted workflows. For example, if you deploy a new version V2 of a workflow, and you have instances in the persistence store that are version V1, you can handle this situation in the following ways:

  • If you want to use the V1 version of the workflow for the V1 persisted instances, you can use an assembly resolver to help you handle this situation.

  • If you want all workflow instances including the V1 persisted instances to use V2, you can use the appliesTo attribute on the <assemblyBinding> element in an application configuration file to redirect assembly binding references to the V2 version of the assembly. For more information about using the appliesTo attribute, see Configuring Assembly Binding Redirection in the .NET Framework SDK section of the MSDN Library.

See Also

Other Resources

Windows Workflow Foundation Programming Guide