Disable Visual Studio 2017 Chrome Debugging

Visual Studio 2017 comes bundled with a version of Chrome which integrates with the VS debugging tools. It’s enabled by default and can be quite useful. However as it’s not the same version of Chrome you may have installed on your machine, it doesn’t give access to your bookmarks, browser extensions etc.

This feature can be disabled:

1. Go to Tools > Options.
2. Select Debugging then General.
3. Uncheck Enable JavaScript debugging for ASP.NET (Chrome and IE).

Next time you run your web application Visual Studio will use whichever version of Chrome/IE you have installed.

Making namespace available across all MVC Razor views

If you are intending to use the same namespace across multiple views, just include it in the web.config of the Views folder. In the following example I wanted the MyProject.WebUI.Properties namespace to be available to all views. The removes the need to add the using statement for this namespace to every view. Please note, once you’ve added the namespace you’ll need to close and reopen any open view files for intellisence to recognize the namespace.

    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="MyProject.WebUI.Properties" />

Xamarin – Change default navigation controller from table to view controller

By default Visual Studio will create a Navigation Control with an attached TableViewController. However if you need a different View Controller it’s quite simple to change it.

You can just delete the TableViewController, Drag and drop a new UIViewController into the StoryBoard, then (holding down Control) Click and drag a “connection” from your NavigationController to the new UIViewController you just added and select “root view”

Connecting to Azure Virtual Machine using alternative port

This is easy when using Classic mode for deploying your virtual machine. Once deployment is complete the RDP port will default to 3389.

To change this:

  1. Select Virtual machines (Classic).
  2. Select the virtual machine you want to change the port for.
  3. Select Endpoints.
  4. Change the public port for both RDP TCP and RDP UDP endpoints to the desired number. DO NOT change the private port.

Sitecore 9 – Whats New?

Sitecore revealed the latest version of their customer experience platform at the Los Vegas Symposium 2017, Sitecore 9. The following is brief overview of whats available.

The name!

Sitecore have changed the name from Customer Experience Platform to Experience Cloud.

Sitecore xConnect

xConnect is a new API which allows developers to integrate data collected by Sitecore with other third party sources. Reading data from the xDB has now been standardised via the xConnect service layer.

Sitecore Cortex

Cortex is a new machine learning engine purpose build for Sitecore. It helps discover new audiences and is able run multi-varient tests. Future development of Cortex will bring automated personalisation and is expect to make an appearance towards the latter part of 2018.


First quarter 2018 will bring Sitecore Commerce 9. This will bring a more mature and fully integrate e-commerce solution. Build in .Net Core the new solution will replace Commerce Server. The old store front will be replaced by SXA compomants.


Microsoft and Sitecore have improved the offerings available from the Azure Marketplace. Its now possible to pick your Sitecore version (all 8.2’s and 9) along with topology and size. While is a simple and quick way to spin up a Sitecore install your are limited to pre-made packages. For customer installs, its still advisable to use the Azure Resource Manager (ARM) templates instead.

Sitecore Forms

Web Forms For Marketers (WFFM) has finally been replaced. Sitecore Forms has new look with full drag and drop support. It also includes multipage forms and conditional logic.

Federated Authentication

Sitecore finally offers federated authentication via OWIN. This provides integration with SAML, Facebook, OAuth, WS-Federation and ADD.


Sitecore is moving away from its proprietary UI framework (SPEAK) to a commodity based strategy, Angular First.

Sitecore Installation Framework (SIF)

Installing Sitecore 9 is different from previous versions. The single executable installation method is now gone. Instead all individual services have been split into their own components. To try and simplify the installation process Sitecore created an installation framework called SIF. It combines Powershell and JSON configuration files to build Sitecore environments. By doing this Sitecore have simplified DevOps and automated deployments.

Sitecore JSS

Sitecore’s JavaScript Services is an API layer on top of Sitecore and lets you hook multiple JavaScript frameworks to Sitecore like React and Vue. Using an OData REST service and API key management, security and data abstraction are also ensured. Together with xConnect, there’s no shortage in what third-party systems or IoT devices you can connect to anymore. By the way, mind that JSS is still in Tech Preview for the Initial Release of 9.0!

Dynamic Placeholders

Until dynamic placeholders have only been available using a Sitecore module or custom code. Sitecore 9 now has built in support.

XDB SQL Support

Sitecore 9 can now write analytics data directly to a SQL Database without going via MongoDB first. In fact the initial release of Sitecore 9 has dropped MongoDB completely, however support will be included in future releases.

Sitecore Zenith and Horizon

While its not included yet, Horizon will change the way content editors interact with Sitecore. This will replace both the Content Editor and Experience Editor with a single solution, providing full drag and drop, device emulation, heat maps and machine learning.

Change a VirtualBox dynamic disk size on MacOS

When creating a dynamic disk VirtualBox asks you to specify the maximum size. If the max dynamic disk size needs changing after its initial creation we cannot use the VirtualBox interface, instead we need the VBoxManage command line tool.

1. Shutdown the VM and quit VirtualBox
2. Open the Terminal app and use the following command to navigate to the VirtualBox app directory
cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/
3. Now in the proper directory, you’re ready to run the resize command with the following syntax:
VBoxManage modifyhd –resize [new size in MB] [/path/to/vdi]
VBoxManage modifyhd –resize 30000 ~/Documents/VM/Windows10.vdi
4. If desired, verify the change has taken place with the showhdinfo command:
5. Launch VirtualBox and boot renewly resized VM

Reclaiming space from VirtualBox on MacOS

Dynamic disks tend to be the preferred choice for virtual disk images as they only use the physic disk space they need. However while VirtualBox is a very good free virtual machine application, the dynamic disks are much better expanding than shrinking. While commercial tools such as VMWare and Parallels have a one click/automatic way to reclaim physical disk space, VirtualBox needs a little manual intervention.

The following steps will give you some physical disk space back, its a good idea to run these after a major service pack install or after removing a large application from your virtual machine. Steps 1-5 is recommend regardless of which VM application you are running as this frees space on the virtual machine.

1. Delete unwanted files
2. Run Windows Clean Up, use the advanced option to remove windows update files.
3. Empty Recycle Bin
4. Defrag
5. Clean garbage bits and bytes using SDelete by Windows Sysinternals, after installation open cmd and type

sdelete.exe C: -z

6. Shutdown Windows VM and close VirtualBox
7. Open Terminal app and enter

cd /Applications/VirtualBox.app/Contents/Resources/VirtualBoxVM.app/Contents/MacOS/

8. Then enter

VBoxManage modifyhd –compact “[/path/to/vdi]”

Retrieving site information in Sitecore

Sitecore provides functions to get the root path and start item for the current context. So when working with multisite solutions you should always get a path relative to the Sitecore.Context.Site settings:

Response.Write("Current site: " + Sitecore.Context.Site.Name + "<br/>");
Response.Write("Database: " + Sitecore.Context.Site.Database.Name + "<br/>");
Response.Write("Content start path: " + Sitecore.Context.Site.ContentStartPath + "<br/>");
Response.Write("Home node: " + Sitecore.Context.Site.StartPath + "<br/>");
Response.Write("Language: " + Sitecore.Context.Language.GetDisplayName() + "<br/>");

The code above would give me the following output for the site at site1.mysite.com:

Current site: website_1
Database: web
Content start path: /sitecore/content/website1
Home node: /sitecore/content/website1/home
Language: English : English

Finding a Sitecore item by ID using a Solr query

By default the _group field contains the Sitecore ID for a specific item. To search for an item with an ID of {799539AB-3495-4D40-9B2F-A394A87960D6} use the following Solr query:


Please note the ID is not stored in the group field as a standard GUID. For the search to work hyphens need removing and converting to lower case.

However this will only work for an item with a single version and language. As Sitecore uses the same item for each piece of content, regardless of the number of versions or languages, the above query may return multiple results.

In this case we need to use the _uniqueid field to return the exact item representing a specific version and language. In this example we change the Solr query to: