Oskar Zetterberg
Sep 19, 2012
  10827
(1 votes)

PageTypeBuilder 2.0 with EPiServer CMS 7 Preview

This is a long overdue post about getting PageTypeBuilder 2.0 working with EPiServer 7 Preview.

I´m not sure the changes I made is the best or even correct, but they work. Joel Abrahamsson, please comment on this.

 

Lets begin.

Get the source for PageTypeBuilder 2.0

Update the references from EPiServer CMS 6 to CMS 7.

Changes have to be made in three files, TabDefinitionUpdater.cs, PageDefinitionUpdater.cs and PageTypeRepository.cs.

 

First up, PageTypeRepository

Add a new private member to the class and add a constructor

private EPiServer.DataAbstraction.IContentTypeRepository _contentTypeRepository;
public PageTypeRepository()
{
_contentTypeRepository = EPiServer.ServiceLocation.ServiceLocator.Current.GetInstance<IContentTypeRepository>();
}

In each of the Load methods (should be three of them) change PageType.Load(arg) to

var pageType = (PageType)_contentTypeRepository.Load(arg).CreateWritableClone();
where arg is string name, Guid guid or int id.

Last change IEnumerable<IPageType> List() from

PageType.List().Select(pageType => new WrappedPageType(pageType)).Cast<IPageType>();

to

return _contentTypeRepository.List().Select(pageType => new WrappedPageType((PageType)pageType)).Cast<IPageType>();

Now, compile and you will get four errors about ambiguous references due to referencing the new EPiServer dll. Clear them up by adding changing

ITabDefinitionRepository to PageTypeBuilder.Abstractions.ITabDefinitionRepository where the errors occurs.

Compile again and you will have a working PageTypeBuilder although there are 78 warnings all of them marking obsolete methods or calls.

That’s it.

 

 

 
Sep 19, 2012

Comments

Tore Gjerdrum
Tore Gjerdrum Sep 20, 2012 02:04 PM

Hi Oskar,

Nice blog post! Helped me a lot!

Just one question. Which build version of EPiServer did you perform this upgrade against? Versjon 7.0.449.1?

Regards, Tore

Oskar Zetterberg
Oskar Zetterberg Sep 20, 2012 02:44 PM

Glad to be able to help. I used the public preview, 7.0.449.1. It should work with more recent versions as well as the only big change I made is to use the IContentTypeRepository.

Tore Gjerdrum
Tore Gjerdrum Sep 24, 2012 10:29 AM

Hi again,

I am using the 7.0.524 version. Everything compiles, but I get an error when trying to run the site. Did you upgrade the site or did you start from scratch?

Multiple custom attributes of the same type found.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Reflection.AmbiguousMatchException: Multiple custom attributes of the same type found.

/Tore

Anders Murel
Anders Murel Sep 24, 2012 04:05 PM

The problem is that we're using the obsolete attribute PageDefinitionTypePlugin in several of our referenced assemblies. While I do not understand why an obsolete attribute should give this type of errors, changing it to PropertyDefinitionTypePlugin solved this error.

Please login to comment.
Latest blogs
Optimizely Opal: How to Build Effective Workflow Agents

If you're building workflow agents in Optimizely Opal, this post covers how specialized agents pass context to each other, why keeping agents small...

Andre | May 20, 2026

ReviewPR: An Azure Function That Reviews Your Azure DevOps Pull Requests With Claude

A while back I wrote about an  Azure Function App for PDF creation that we use to offload PDF rendering from our Optimizely DXP site. That same...

KennyG | May 19, 2026

Accelerating Optimizely CMS and Commerce upgrades with agentic AI (Part 2 of 2)

The Real Transformation in Optimizely CMS 13: Why the Upgrade Itself Is the Easy Part. A field-tested playbook for enterprise teams moving from...

Hung Le Hoang | May 18, 2026

Is the most powerful AI model really the best value?

Artificial Intelligence is already becoming part of everyday software development. Developers now use AI tools to generate code, write documentatio...

K Khan | May 16, 2026