0

I've upgraded from Unicorn 3 to 4 by installing the nuget packages. It required a few config changes and it feels like this is just a config problem. However, I've looked at all the example configs provided with Unicorn and updated my main configs, those seem to be working.

Because, this is happening when I sync from the /unicorn.aspx page. I'm just doing an upgrade so the configs all in the Unicorn 3 format. I had to change lines like

<roleDataStore type="Unicorn.Roles.Data.ReverseHierarchyRoleDataStore, Unicorn.Roles" physicalRootPath="" singleInstance="true"/>

to

<roleDataStore type="Unicorn.Roles.Data.FilesystemRoleDataStore, Unicorn.Roles" physicalRootPath="" singleInstance="true"/>

Otherwise it's the standard elements with a rolePredicate following.

Full Error:

ERROR: Cannot activate Unicorn.Roles.Loader.RoleLoader, constructor param 'syncConfiguration' (IRoleSyncConfiguration). 
   The type 'IRoleSyncConfiguration' is probably not registered, or may need to be an explicit unmapped parameter (as an XML attribute on the type registration). 
   Inner message: Cannot construct Unicorn.Roles.Loader.IRoleSyncConfiguration because it has no constructor! (Configy.Containers.MicroResolutionException)
at Configy.Containers.MicroContainer.Activate(Type type, KeyValuePair`2[] unmappedConstructorParameters)
at System.Lazy`1.CreateValue()
at System.Lazy`1.LazyInitValue()
at Configy.Containers.MicroContainer.Resolve(Type type)
at Configy.Containers.MicroContainer.Resolve[T]()
at Unicorn.Roles.Pipelines.UnicornSyncComplete.SyncRoles.Process(UnicornSyncCompletePipelineArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
at Unicorn.SerializationHelper.SyncTree(IConfiguration configuration, Action`1 rootLoadedCallback, Boolean runSyncStartPipeline, IItemData partialSyncRoot)
at Unicorn.SerializationHelper.SyncConfigurations(IConfiguration[] configurations, IProgressStatus progress, ILogger additionalLogger)
0

It looks like a DLL mismatch. Just to confirm, you've made sure all of this matches your updated configuration?

        <defaults>
            <!-- Note: do not colocate serialized items and serialized roles in the same folder -->
            <roleDataStore physicalRootPath="$(dataFolder)\Unicorn\Unicorn.Roles\$(configurationName)" type="Unicorn.Roles.Data.FilesystemRoleDataStore, Unicorn.Roles" singleInstance="true"/>
            <roleLoader type="Unicorn.Roles.Loader.RoleLoader, Unicorn.Roles" singleInstance="true" />
                <roleLoaderLogger type="Unicorn.Roles.Loader.DefaultRoleLoaderLogger, Unicorn.Roles" singleInstance="true" />

            <roleSerializationFormatter type="Unicorn.Roles.Formatting.YamlRoleSerializationFormatter, Unicorn.Roles" singleInstance="true" />

            <!-- 
                If you set RemoveOrphans to true, role syncing will delete matching roles that are not serialized, like item syncing does.
                If set to false, roles are only ever added or updated (similar to New Items Only item syncing but updates are also synced)
            -->
            <roleSyncConfiguration removeOrphans="true" type="Unicorn.Roles.Loader.DefaultRoleSyncConfiguration, Unicorn.Roles" singleInstance="true" />
        </defaults>

If so, my best guess would be, that your Unicorn.Roles.dll is still a version 3 where a version 4 is expected and required.

  • 1
    I think it was the DLL and the roleSyncConfiguration line was missing. The old DLL was being copied from another project. – Michael Peppler Jul 11 '18 at 15:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.