I've started searching about this matter, but nothing found to help, so I've started thinking. Finally a solution to the problem was found.
Scripts were developped for automatic versioning, build and deployment in test, preproduction and production environment.
What do you need to successfully version a set of schemas, pipelines, pipeline components, orchestrations etc. :
- Schema versioning:
- XML namespace must be in some way "dynamic" (eg. http://mynamespace.com/__ASSEMBLYVERSION__/messageA)
- If you use "Quick promotion" that you should also version namespace of PropertySchema.xsd schema
- Namespace of schema (when you click on a .xsd file) should be of form: org.MyOrg.__ASSEMBLYVERSION__.schemas and you preserve Type of schema
- AssemblyVersion should be set to the progressive version being built (it's located in .btproj file)
- Orchestration versioning:
- After schemas are prepared you can use them in orchestrations. These do not need any particular modification
- AssemblyVersion should be set to the progressive version being built (it's located in .btproj file)
- Custom pipeline versioning:
- DefaultNamespace should be as: org.MyOrg.__ASSEMBLYVERSION__.pipelines (it's located in .btproj file)
- AssemblyName should be as: org.MyOrg.__ASSEMBLYVERSION__.pipelines - this will help when you GAC assemblies later in the deployment phase (it's located in .btproj file)
- Assembly version should ramain set to 1.0.0.0 (it's located in .btproj file)
- Custom pipeline components:
- If you need to perform any action on XML document load from stream you should remember that XML namespace used is dynamic..
In general all DLL's should have the same assembly version (the progressive one), but DLL's having custom pipelines should have version set to 1.0.0.0 and in the assembly name have this version incorporated.
Another important thing is that when you do a replace of __ASSEMBLYVERSION__ macro in pre-build stage you should keep it in form of _1_3_15_1000_ so it is accepted as a part of .NET namespace, XML namespace and file name...
Hope that someone will find this blog usefull ...
Just to mention that this system is live for more than 2 years in production environment of important client.
Ivan Jocic
1 comment:
Can you elaborate on "dynamic namespace" on a scheama?
The map (.btm) expects message types--with namespace considered a part of the message type.
How do you have a test version and a production version of a map that use dynamic-namespaced messages.
Post a Comment