I’m happy to announce that Page Type Builder version 2.0 has finally been released. It can be downloaded here and soon from the EPiServer NuGet feed.
Compared to the last release candidate, version 1.9.3, this release contains a few minor changes such as:
Compared to the previous stable release (1.3 and 1.3.1) significant changes and additions include:
Many thanks to everyone who has contributed, especially to Lee Crowe for his significant contributions, while I’ve been hard at work with Truffler.
Merry Christmas!
PS. For updates about new posts, sites I find useful and the occasional rant you can follow me on Twitter. You are also most welcome to subscribe to the RSS-feed.
This blog is built with EPiServer Community, EPiServer CMS, ASP.NET MVC and a bunch of other great products. The source code is available for download at the projects page, where you also can read more about this site and my other projects.
read more
Comments
Erik Nilsson 2 months ago
Thanks for the great cristmas gift!
Oskar Zetterberg 2 months ago
Awesome.Merry christmas.
Erik Nilsson 2 months ago
Hmm, is pagetypebuilder.dll really supposed to reference episerver cms6 r1 and not r2?
Marcus 2 months ago
Best christmas gift ever!
Lee Crowe 2 months ago
Nice one Joel, it's here at last ;)
PTB is the best thing since sliced bread for EPiServer and I am sure the whole community will thank you for all the hard work you have put into developing it for us and finally getting v2.0 out of the door :)
Joel Abrahamsson 2 months ago
Hey Erik!
It is. The intention has been to be backwards compatible with R1 up until version 2.0. As EPiServer adds binding redirects for their assemblies it shouldn't cause any problems unless someone has removed them, in which case there will most likely be other problems. In future releases the R1 support will be dropped and the R2 assemblies will be referenced.
Joel Abrahamsson 2 months ago
Lee, it's pretty easy when you do a lot of the work ;-)
Erik Nilsson 2 months ago
Ah, i sort of figured as much,
It did work without problems in my site, but i use sandcastle to generate some SDK documentation, and when i sent it to the buildserver the SDK builder task got a little upset that there was a reference to a unknown episerver version (since epi is not installed on the buildserver).
I just got the source and recompiled it with the r2 dll's so all is well in Nansenland.
Hans Hage 1 months ago
Is this still supported on Oracle?
I just attempted to upgrade from 1.9.3 to 2.0 (CMS 6 R2) and my development site using Oracle.DataAccess.Client now throws errors whenever any page is served. I'm thinking it has something to do with the database property row change, but that's nothing more than a hunch... I ended up rolling my site back to 1.9.3, but here is my stack trace:
[OracleException (0x80004005): ORA-00923: FROM keyword not found where expected]
Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure, Boolean bCheck) +996
Oracle.DataAccess.Client.OracleException.HandleError(Int32 errCode, OracleConnection conn, String procedure, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, Boolean bCheck) +50
Oracle.DataAccess.Client.OracleCommand.ExecuteNonQuery() +4268
EPiServer.Data.Dynamic.Providers.c__DisplayClass24.b__23() +141
EPiServer.Data.Dynamic.Providers.c__DisplayClass7.b__6() +199
EPiServer.Data.Dynamic.Providers.DbDataStoreProvider.InternalExecute(Func`1 method) +128
EPiServer.Data.Dynamic.Providers.DbDataStoreProvider.ExecuteTransaction(Action action) +87
EPiServer.Data.Dynamic.Providers.DbDataStoreProvider.SaveStoreDefinition(StoreDefinition storeDefinition) +76
EPiServer.Data.Dynamic.c__DisplayClass6.b__3() +319
EPiServer.Data.Cache.LocalCache`2.Add(TKey key, Boolean cacheNullValues, Boolean overwriteExistingValue, Func`1 action) +127
EPiServer.Data.Dynamic.StoreDefinition.InternalCreate(String storeName, IDictionary`2 typeBag, StoreDefinitionParameters parameters) +175
EPiServer.Data.Dynamic.EPiServerDynamicDataStoreFactory.CreateStore(String storeName, IDictionary`2 typeBag, StoreDefinitionParameters parameters) +117
EPiServer.Data.Dynamic.EPiServerDynamicDataStoreFactory.CreateStore(String storeName, Type type, StoreDefinitionParameters parameters) +247
EPiServer.Data.Dynamic.EPiServerDynamicDataStoreFactory.CreateStore(String storeName, Type type) +12
PageTypeBuilder.Migrations.MigrationsHook.GetStore() +58
PageTypeBuilder.Migrations.MigrationsHook.ValidateMigrations(IEnumerable`1 migrations) +141
PageTypeBuilder.Migrations.MigrationsHook.PreSynchronization(ISynchronizationHookContext context) +171
PageTypeBuilder.Synchronization.Hooks.HooksHandler.b__1(IPreSynchronizationHook h) +41
System.Collections.Generic.List`1.ForEach(Action`1 action) +56
PageTypeBuilder.Synchronization.Hooks.HooksHandler.InvokePreSynchronizationHooks() +166
PageTypeBuilder.Synchronization.PageTypeSynchronizer.SynchronizePageTypes() +15
PageTypeBuilder.Initializer.Initialize(InitializationEngine context) +77
EPiServer.Framework.Initialization.InitializationEngine.InitializeModules() +343
EPiServer.Framework.Initialization.InitializationEngine.Initialize(HostType hostType) +82
EPiServer.Framework.Initialization.InitializationModule.Initialize(HostType hostType) +163
EPiServer.Framework.Initialization.InitializationModule.FrameworkInitialization(HostType hostType) +68
EPiServer.Global..ctor() +54
ASP.global_asax..ctor() +4
[TargetInvocationException: Exception has been thrown by the target of an invocation.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck) +0
System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache) +86
System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) +230
System.Activator.CreateInstance(Type type, Boolean nonPublic) +67
System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +1051
System.Activator.CreateInstance(Type type, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) +111
System.Web.HttpApplicationFactory.GetNormalApplicationInstance(HttpContext context) +221
System.Web.HttpApplicationFactory.GetApplicationInstance(HttpContext context) +107
System.Web.HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) +289
Joel Abrahamsson 1 months ago
Hi Hans,
Could it be that you previously didn't have PageTypeBuilder.Migrations.dll referenced but added that when you upgraded? It seems the exception is thrown when the Migrations extension tries to create a DDS store to save the current migration number in.
In general PTB isn't tested against Oracle but on the other hand it never accesses the DB directly but goes through EPiServer's APIs.