{"id":714,"date":"2013-01-06T21:23:27","date_gmt":"2013-01-06T21:23:27","guid":{"rendered":"http:\/\/collaboriscom.wpengine.com\/?p=714"},"modified":"2023-03-08T11:51:35","modified_gmt":"2023-03-08T11:51:35","slug":"how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution","status":"publish","type":"post","link":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/","title":{"rendered":"How to support multiple versions of SharePoint in a single Visual Studio solution"},"content":{"rendered":"<h1 style=\"\">How to support multiple versions of SharePoint in a single Visual Studio solution<\/h1>\n<p>If you are ever tasked with having to support more than one version of SharePoint in a Visual Studio Solution (e.g SharePoint 2010 and SharePoint 2013), then this post will hopefully be of some help!<\/p>\n<p><em>Before I get started &#8211; if after reading this &#8211; you like it &#8211; please share or link to it. It all helps to spread the word! Also, if you have any other tips, use the comments at the bottom.<\/em><strong>Firstly, why would you need to this?<\/strong><\/p>\n<ul>\n<li>You could be a software vendor (like us) that sells software that runs against one or more versions of SharePoint. We develop <a href=\"\/products\/docread\/\" target=\"_blank\" rel=\"noopener\">DocRead for SharePoint<\/a> which runs on all 3 versions of SharePoint. Maintaining 3 code bases would be expensive.<\/li>\n<li>You could have more than one version of an application in your organization. The bigger the organization the more likely this is. For example, a multi-national may have SharePoint 2007 in Europe and SharePoint 2010 in the USA. To migrate Europe to SharePoint 2010 could take years, meaning the custom application will need to work in both versions.<\/li>\n<\/ul>\n<p><strong>Why not just copy the code ?<\/strong>This is bad &#8211; if you find a bug, you need to fix it in two places. If you need a new feature, it needs to be developed and tested in 2 places. At all costs try and avoid this if you are going to be supporting both installations for anything more than a few days.<\/p>\n<p>So, let&#8217;s get started &#8211; follow these steps to find out how we do it at Collaboris.<\/p>\n<h2>Create new solution configuration&#8217;s in Visual Studio<\/h2>\n<p>Open your existing Visual Studio Solution (which supports the older version of SharePoint) and add 2 new solution configurations. Let&#8217;s assume you already have a SharePoint 2010 solution and now want to support 2013. Call the configurations something meaningful, such as &#8230;<\/p>\n<ul>\n<li>Release_SP2013<\/li>\n<li>Debug_SP2013<\/li>\n<\/ul>\n<p>Once this is configured you should end up with this :<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/solution-configuration-sharepoint.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/solution-configuration-sharepoint.png\" alt=\"solution-configuration-sharepoint\" width=\"607\" height=\"381\" \/><\/a><\/p>\n<p>Doing this allows us to use &#8216;Conditional Compilation Symbols&#8217; against each new configuration. (More on this later).<\/p>\n<p><em>BTW &#8211; the reason we have \u2018<strong>Release<\/strong>\u2019 and \u2018<strong>Debug<\/strong>\u2019 is because we do different tasks on each one. For example, we run code analysis (using StyleCop) and unit tests on \u2018debug\u2019 and obfuscate our code on \u2018Release\u2019. The debug build also won&#8217;t be optimized and is generally only for development purposes.<\/em><\/p>\n<h2>Create new Visual Studio SharePoint projects<\/h2>\n<p>If your current solution contains one or more Visual Studio SharePoint Projects you will need to copy them and create new SharePoint 2013 versions. To do this, copy the entire folder containing your *.csproj using windows Windows explorer, rename it and then add the new project to the solution. In the example below we have 3 SharePoint projects (one for 2007, 2010 and 2013).<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/sharepoint-project-visual-studio.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/sharepoint-project-visual-studio.png\" alt=\"sharepoint-project-visual-studio\" width=\"265\" height=\"248\" \/><\/a><\/p>\n<p><strong>Isn&#8217;t this duplicating code ?<\/strong>Yes. We originally tried to maintain all we needed in one single SharePoint project. However, as soon as you want to take advantage of any new SharePoint features (available in the newer version) you can&#8217;t. You also need to have post-build scripts that modify the WSP. In short, it&#8217;s messy.<\/p>\n<p>Having said that, we don&#8217;t duplicate a great deal as we have a post build commands that &#8216;XCOPY&#8217; all of our user controls, images, Javascript, CSS, resources, pages and so on, from a master &#8216;web project&#8217; to each of the Visual Studio SharePoint solutions. In fact the only thing that&#8217;s separate for each version of the project is the Feature and Package configuration.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/xcopy-to-sharepoint.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/xcopy-to-sharepoint.png\" alt=\"xcopy-to-sharepoint\" width=\"511\" height=\"585\" \/><\/a><\/p>\n<p>We trigger our XCOPY commands from our master web project (&#8220;Collaboris.Readership.Web.csproj&#8221;) as a post-build event as below :<\/p>\n<h2><a href=\"\/wp-content\/uploads\/2015\/07\/post-build-xcopy.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/post-build-xcopy.png\" alt=\"post-build-xcopy\" width=\"951\" height=\"243\" \/><\/a><\/h2>\n<h2>What about the hardcoded versions in your ASCX and ASPX?<\/h2>\n<p><span style=\"font-size: small;\">You will also notice that in your ASCX&#8217;s and ASPX&#8217;s you will have references to a particular version of SharePoint. e.g.\u00a0<\/span><\/p>\n<p><strong>&lt;%@ Register Tagprefix=&#8221;SharePoint&#8221; Namespace=&#8221;Microsoft.SharePoint.WebControls&#8221; Assembly=&#8221;Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&#8221; %&gt;<\/strong><\/p>\n<p>The good news here is you don&#8217;t need to change them! Microsoft already use Assembly Binding Redirects to redirect yuor references to the latest SP Dlls. Read this article for more information :\u00a0<a href=\"http:\/\/sadomovalex.blogspot.co.uk\/2011\/09\/assembly-binding-redirect-in-sharepoint.html\">http:\/\/sadomovalex.blogspot.co.uk\/2011\/09\/assembly-binding-redirect-in-sharepoint.html<\/a><\/p>\n<h2>Conditional compilation<\/h2>\n<p>If you don\u2019t know what conditional compilation is, <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/x435tkbk.aspx\" target=\"_blank\" rel=\"noopener\">check this out.<\/a>\u00a0Conditional compilation\u00a0is cool because it lets us do things like, add logging code for a \u2018Debug\u2019 build or more importantly build code that is specific to the version of SharePoint based on the active configuration.<\/p>\n<p>To get this working, we are going to need to add new symbols for both our \u00a0\u2018<strong>Release_SP2010<\/strong>\u2019 and \u2018<strong>Debug_SP2010<\/strong>\u2019 configurations.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/conditional-compilation-2010.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/conditional-compilation-2010.png\" alt=\"conditional-compilation-2010\" width=\"569\" height=\"132\" \/><\/a>We also need to the same for 2013. In our \u2018<strong>Release_SP2013<\/strong>\u2019 and \u2018<strong>Debug_SP2013<\/strong>\u2019 configuration we define a symbol called \u2018<strong>SP2013<\/strong>\u2019<a href=\"\/wp-content\/uploads\/2015\/07\/conditional-compilation-2013.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/conditional-compilation-2013.png\" alt=\"conditional-compilation-2013\" width=\"567\" height=\"129\" \/><\/a><\/p>\n<p>We also have the same for 2007.<\/p>\n<p>Now this is done &#8211; we can now use the symbols (&#8220;<strong>SP2007&#8243;<\/strong>, &#8220;<strong>SP2010&#8243;\u00a0<\/strong>and &#8220;<strong>SP2013&#8243;<\/strong>) in code as such :<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/conditional-compilation-code-example.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/conditional-compilation-code-example.png\" alt=\"conditional-compilation-code-example\" width=\"752\" height=\"98\" \/><\/a><\/p>\n<p>In the code sample (above) only the first will be built and compiled into both of SharePoint 2013 builds (debug and release). For 2007 and 2010 the 2nd line will be compiled (in light gray).<\/p>\n<p>This is fantastic because it&#8217;s now really easy to write code that is specific to a particular version of SharePoint. For example, if Microsoft decide to &#8216;obsolete&#8217; a feature then you will want use the new way, which is what&#8217;s happening above.<\/p>\n<h2>.Net 4.5 or .Net 3.5<\/h2>\n<p>As you may know, SharePoint 2013 now uses .Net 4.5, so your App Pool will be configured as such \u2026<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/dotnet-framework.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/dotnet-framework.png\" alt=\"dotnet-framework\" width=\"445\" height=\"172\" \/><\/a><\/p>\n<p>This means that you should compile your custom assemblies against the .Net 4.5 framework (not .Net 2.0 or .Net 3.5, depending on your earlier versions). This also means you can start to take advantage of the latest and greatest from .Net while still maintaining one code base.<\/p>\n<p>Unfortunately, the visual studio IDE doesn\u2019t give you a way to conditionally target a framework version based on a conditional compilation symbol, however, this can easily be achieved by editing the MSBuild XML for the project.<\/p>\n<p>To do this, click on \u2018Unload Project\u2019 ..<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/upload-document1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/upload-document1.png\" alt=\"upload-document\" width=\"553\" height=\"213\" \/><\/a><\/p>\n<p>And \u00a0\u2018Edit \u2026. *.csproj \u2019<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/edit-project.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/edit-project.png\" alt=\"edit-project\" width=\"368\" height=\"155\" \/><\/a><\/p>\n<p>Once that\u2019s done you should now be editing MSBuild XML that describes the make-up of your project.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/sharepoint-project-msbuild-version.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/sharepoint-project-msbuild-version.png\" alt=\"sharepoint-project-msbuild-version\" width=\"651\" height=\"562\" \/><\/a><\/p>\n<p>In this file you need to ensure you add a \u2018<strong>TargetFrameworkVersion<\/strong>\u2019 and set it to \u2018<strong>v4.0<\/strong>\u2019 for both the &#8216;<strong>Debug_SP2013<\/strong>&#8216; and &#8216;<strong>Release_SP2013<\/strong>&#8216; configurations.. Do this for all projects in your solution that need to support more than version of SharePoint. It can take a few minutes to do, but it&#8217;s a one off.<\/p>\n<p><span style=\"color: #c00000;\">Update : Although SP2013 projects compiled against .net 4.0 will work. you should ideally use .Net 4.5 so you will need to use Visual Studio 2012.<\/span><\/p>\n<h2>Conditional Assembly References<\/h2>\n<p>You may also find that you need to add a different (or new) version of an assembly if it\u2019s 2013 but not if its 2010. If you reference that assembly in the 2010 build (built against an earlier version) it will break. So how do you do it? You can also achieve this in pretty much the same way. Edit your \u201c*.csproj\u201d<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/sharepoint-project-msbuild-reference.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/sharepoint-project-msbuild-reference.png\" alt=\"sharepoint-project-msbuild-reference\" width=\"994\" height=\"199\" \/><\/a><\/p>\n<p>The lines above cause the correct version of the Microsoft.SharePoint.dll to be loaded depending upon the configuration in use (2007, 2010 or 2013).<\/p>\n<p>This does cause a yellow warning symbol to show in the IDE but don\u2019t\u2019 worry about that \u2013 it\u2019s harmless.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/sharepoint-project-references-warning.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/sharepoint-project-references-warning.png\" alt=\"sharepoint-project-references-warning\" width=\"342\" height=\"279\" \/><\/a><\/p>\n<h2>Exclude projects that\u00a0shouldn&#8217;t\u00a0be built for the active configuration<\/h2>\n<p>One other important step is to exclude projects that\u00a0shouldn&#8217;t\u00a0be built for that configuration. For example, If you are building for \u201cSharePoint 2013\u201d in \u201cRelease\u201d mode then you don\u2019t need to build the SharePoint projects that are specifically for SharePoint 2007 or SharePoint 2010. In fact, if you do it is highly likely this will cause an error.<\/p>\n<p>Ours looks like this:<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/configuration-manager.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/configuration-manager.png\" alt=\"configuration-manager\" width=\"608\" height=\"380\" \/><\/a><\/p>\n<h2>How to build for all versions on one build machine<\/h2>\n<p>When we check our code into TFS a new build is triggered. This results in the creation of 3 MSI&#8217;s (one for each version of SharePoint). We manage to do this all with one build server. To achieve this though, you will need to have all 3 &#8216;hives&#8217; copied onto the build server. You will also need to make sure your assembly references pick the assemblies from these paths, (not the GAC).<\/p>\n<h2>Obfuscation with Smart Assembly<\/h2>\n<p>One final point to make is around obfuscation. We protect all of our code from being reversed engineered in tools like .Net Reflector or ILSpy. To do this we use\u00a0<a href=\"http:\/\/www.red-gate.com\/products\/dotnet-development\/smartassembly\/\">SmartAssembly<\/a> from Redgate.<\/p>\n<p>Many of our SmartAssembly settings are different based on the version of SharePoint that&#8217;s being built, so we need to load in a different SmartAssembly project as a post build task. To cater for this, we edit the MSBuild XML as follows.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/smart-assembly-msbuild.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2015\/07\/smart-assembly-msbuild.png\" alt=\"smart-assembly-msbuild\" width=\"675\" height=\"195\" \/><\/a><\/p>\n<p>You can do any carry out any other version specific post-build tasks in this manner.<\/p>\n<p>&nbsp;<\/p>\n<h3>You may also like:<\/h3>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_published_date\" data-shortcode-name=\"Post date\" data-extra_key=\"\" data-attr-type=\"published\" data-attr-date-format-select=\"F j, Y\" data-attr-date-format=\"F j, Y\" data-attr-show-time=\"0\" data-attr-time-format-select=\"g:i a\" data-attr-time-format=\"\" data-attr-link=\"0\" data-attr-target=\"1\" data-attr-rel=\"0\" data-option-inline=\"1\">October 13, 2022 <\/span><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/link-document-fields-microsoft365\/#comments\" dynamic-postlink=\"tcb_post_comments_link\" data-shortcode-id=\"1373375\"><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_comments_number\" data-shortcode-name=\"Number of comments\" data-extra_key=\"\" data-option-inline=\"1\">0<\/span> &nbsp;comments<\/p>\n<p><\/a><\/p>\n<h2 style=\"\"><span data-shortcode=\"tcb_post_title\" data-shortcode-name=\"Post title\" data-extra_key=\"\" data-attr-link=\"1\" data-attr-target=\"0\" data-attr-rel=\"0\" data-option-inline=\"1\" data-attr-static-link=\"{&quot;className&quot;:&quot;&quot;,&quot;href&quot;:&quot;#&quot;,&quot;class&quot;:&quot;&quot;}\" data-attr-css=\"\"><a href=\"https:\/\/www.collaboris.com\/link-document-fields-microsoft365\/\" title=\"How to link fields in your policy template to an O365 library\" data-css=\"\">How to link fields in your policy template to an O365 library<\/a><\/span><\/h2>\n<p>How to link fields in a document to an O365 libraryLinking fields in a <a href=\"https:\/\/www.collaboris.com\/link-document-fields-microsoft365\/#more-1373375\">&#8230;<\/a><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/link-document-fields-microsoft365\/\"><span><span>Read More<\/span><\/span><\/a><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_published_date\" data-shortcode-name=\"Post date\" data-extra_key=\"\" data-attr-type=\"published\" data-attr-date-format-select=\"F j, Y\" data-attr-date-format=\"F j, Y\" data-attr-show-time=\"0\" data-attr-time-format-select=\"g:i a\" data-attr-time-format=\"\" data-attr-link=\"0\" data-attr-target=\"1\" data-attr-rel=\"0\" data-option-inline=\"1\">February 10, 2022 <\/span><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/how-to-find-out-who-has-completed-a-sharepoint-survey\/#comments\" dynamic-postlink=\"tcb_post_comments_link\" data-shortcode-id=\"1373375\"><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_comments_number\" data-shortcode-name=\"Number of comments\" data-extra_key=\"\" data-option-inline=\"1\">0<\/span> &nbsp;comments<\/p>\n<p><\/a><\/p>\n<h2 style=\"\"><span data-shortcode=\"tcb_post_title\" data-shortcode-name=\"Post title\" data-extra_key=\"\" data-attr-link=\"1\" data-attr-target=\"0\" data-attr-rel=\"0\" data-option-inline=\"1\" data-attr-static-link=\"{&quot;className&quot;:&quot;&quot;,&quot;href&quot;:&quot;#&quot;,&quot;class&quot;:&quot;&quot;}\" data-attr-css=\"\"><a href=\"https:\/\/www.collaboris.com\/how-to-find-out-who-has-completed-a-sharepoint-survey\/\" title=\"How to find out who has completed a SharePoint Survey\" data-css=\"\">How to find out who has completed a SharePoint Survey<\/a><\/span><\/h2>\n<p>How to find out who has completed a SharePoint SurveyIf you would like to <a href=\"https:\/\/www.collaboris.com\/how-to-find-out-who-has-completed-a-sharepoint-survey\/#more-391\">&#8230;<\/a><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/how-to-find-out-who-has-completed-a-sharepoint-survey\/\"><span><span>Read More<\/span><\/span><\/a><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_published_date\" data-shortcode-name=\"Post date\" data-extra_key=\"\" data-attr-type=\"published\" data-attr-date-format-select=\"F j, Y\" data-attr-date-format=\"F j, Y\" data-attr-show-time=\"0\" data-attr-time-format-select=\"g:i a\" data-attr-time-format=\"\" data-attr-link=\"0\" data-attr-target=\"1\" data-attr-rel=\"0\" data-option-inline=\"1\">December 13, 2021 <\/span><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/creating-sharepoint-audience-new-employees\/#comments\" dynamic-postlink=\"tcb_post_comments_link\" data-shortcode-id=\"1373375\"><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_comments_number\" data-shortcode-name=\"Number of comments\" data-extra_key=\"\" data-option-inline=\"1\">0<\/span> &nbsp;comments<\/p>\n<p><\/a><\/p>\n<h2 style=\"\"><span data-shortcode=\"tcb_post_title\" data-shortcode-name=\"Post title\" data-extra_key=\"\" data-attr-link=\"1\" data-attr-target=\"0\" data-attr-rel=\"0\" data-option-inline=\"1\" data-attr-static-link=\"{&quot;className&quot;:&quot;&quot;,&quot;href&quot;:&quot;#&quot;,&quot;class&quot;:&quot;&quot;}\" data-attr-css=\"\"><a href=\"https:\/\/www.collaboris.com\/creating-sharepoint-audience-new-employees\/\" title=\"Creating a SharePoint Audience for New Employees\" data-css=\"\">Creating a SharePoint Audience for New Employees<\/a><\/span><\/h2>\n<p>How to create a SharePoint Global Audience for New EmployeesAutomatically identifying a &#8216;new employees&#8217; <a href=\"https:\/\/www.collaboris.com\/creating-sharepoint-audience-new-employees\/#more-2054\">&#8230;<\/a><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/creating-sharepoint-audience-new-employees\/\"><span><span>Read More<\/span><\/span><\/a><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_published_date\" data-shortcode-name=\"Post date\" data-extra_key=\"\" data-attr-type=\"published\" data-attr-date-format-select=\"F j, Y\" data-attr-date-format=\"F j, Y\" data-attr-show-time=\"0\" data-attr-time-format-select=\"g:i a\" data-attr-time-format=\"\" data-attr-link=\"0\" data-attr-target=\"1\" data-attr-rel=\"0\" data-option-inline=\"1\">December 8, 2021 <\/span><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/policy-and-procedures-using-sharepoint-search-to-find-policies-quickly\/#comments\" dynamic-postlink=\"tcb_post_comments_link\" data-shortcode-id=\"1373375\"><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_comments_number\" data-shortcode-name=\"Number of comments\" data-extra_key=\"\" data-option-inline=\"1\">0<\/span> &nbsp;comments<\/p>\n<p><\/a><\/p>\n<h2 style=\"\"><span data-shortcode=\"tcb_post_title\" data-shortcode-name=\"Post title\" data-extra_key=\"\" data-attr-link=\"1\" data-attr-target=\"0\" data-attr-rel=\"0\" data-option-inline=\"1\" data-attr-static-link=\"{&quot;className&quot;:&quot;&quot;,&quot;href&quot;:&quot;#&quot;,&quot;class&quot;:&quot;&quot;}\" data-attr-css=\"\"><a href=\"https:\/\/www.collaboris.com\/policy-and-procedures-using-sharepoint-search-to-find-policies-quickly\/\" title=\"Policy and Procedures : Using SharePoint Search to find policies quickly\" data-css=\"\">Policy and Procedures : Using SharePoint Search to find policies quickly<\/a><\/span><\/h2>\n<p>Policy and Procedures : Using SharePoint Search to find policies quicklyThis post is part <a href=\"https:\/\/www.collaboris.com\/policy-and-procedures-using-sharepoint-search-to-find-policies-quickly\/#more-311\">&#8230;<\/a><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/policy-and-procedures-using-sharepoint-search-to-find-policies-quickly\/\"><span><span>Read More<\/span><\/span><\/a><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_published_date\" data-shortcode-name=\"Post date\" data-extra_key=\"\" data-attr-type=\"published\" data-attr-date-format-select=\"F j, Y\" data-attr-date-format=\"F j, Y\" data-attr-show-time=\"0\" data-attr-time-format-select=\"g:i a\" data-attr-time-format=\"\" data-attr-link=\"0\" data-attr-target=\"1\" data-attr-rel=\"0\" data-option-inline=\"1\">December 1, 2021 <\/span><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/sharepoint-survey-permissions-explained\/#comments\" dynamic-postlink=\"tcb_post_comments_link\" data-shortcode-id=\"1373375\"><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_comments_number\" data-shortcode-name=\"Number of comments\" data-extra_key=\"\" data-option-inline=\"1\">0<\/span> &nbsp;comments<\/p>\n<p><\/a><\/p>\n<h2 style=\"\"><span data-shortcode=\"tcb_post_title\" data-shortcode-name=\"Post title\" data-extra_key=\"\" data-attr-link=\"1\" data-attr-target=\"0\" data-attr-rel=\"0\" data-option-inline=\"1\" data-attr-static-link=\"{&quot;className&quot;:&quot;&quot;,&quot;href&quot;:&quot;#&quot;,&quot;class&quot;:&quot;&quot;}\" data-attr-css=\"\"><a href=\"https:\/\/www.collaboris.com\/sharepoint-survey-permissions-explained\/\" title=\"SharePoint Survey Permissions Explained\" data-css=\"\">SharePoint Survey Permissions Explained<\/a><\/span><\/h2>\n<p>SharePoint Survey Permissions ExplainedSharePoint Permissions can be complex at the best of times. After <a href=\"https:\/\/www.collaboris.com\/sharepoint-survey-permissions-explained\/#more-639\">&#8230;<\/a><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/sharepoint-survey-permissions-explained\/\"><span><span>Read More<\/span><\/span><\/a><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_published_date\" data-shortcode-name=\"Post date\" data-extra_key=\"\" data-attr-type=\"published\" data-attr-date-format-select=\"F j, Y\" data-attr-date-format=\"F j, Y\" data-attr-show-time=\"0\" data-attr-time-format-select=\"g:i a\" data-attr-time-format=\"\" data-attr-link=\"0\" data-attr-target=\"1\" data-attr-rel=\"0\" data-option-inline=\"1\">November 27, 2021 <\/span><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/how-to-set-default-column-values-on-a-document-in-sharepoint\/#comments\" dynamic-postlink=\"tcb_post_comments_link\" data-shortcode-id=\"1373375\"><\/p>\n<p style=\"font-size: var(--tve-font-size, 13px);\"><span data-shortcode=\"tcb_post_comments_number\" data-shortcode-name=\"Number of comments\" data-extra_key=\"\" data-option-inline=\"1\">0<\/span> &nbsp;comments<\/p>\n<p><\/a><\/p>\n<h2 style=\"\"><span data-shortcode=\"tcb_post_title\" data-shortcode-name=\"Post title\" data-extra_key=\"\" data-attr-link=\"1\" data-attr-target=\"0\" data-attr-rel=\"0\" data-option-inline=\"1\" data-attr-static-link=\"{&quot;className&quot;:&quot;&quot;,&quot;href&quot;:&quot;#&quot;,&quot;class&quot;:&quot;&quot;}\" data-attr-css=\"\"><a href=\"https:\/\/www.collaboris.com\/how-to-set-default-column-values-on-a-document-in-sharepoint\/\" title=\"How to set default column values on a document in SharePoint\" data-css=\"\">How to set default column values on a document in SharePoint<\/a><\/span><\/h2>\n<p>How to set default column values on a document in SharePointIf you haven\u2019t heard <a href=\"https:\/\/www.collaboris.com\/how-to-set-default-column-values-on-a-document-in-sharepoint\/#more-272\">&#8230;<\/a><\/p>\n<p><a href=\"https:\/\/www.collaboris.com\/how-to-set-default-column-values-on-a-document-in-sharepoint\/\"><span><span>Read More<\/span><\/span><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to support multiple versions of SharePoint in a single Visual Studio solution If you are ever tasked with having to support more than one version of SharePoint in a Visual Studio Solution (e.g SharePoint 2010 and SharePoint 2013), then this post will hopefully be of some help! Before I get started &#8211; if after [&hellip;]<\/p>\n","protected":false},"author":9,"featured_media":2106,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"","footnotes":""},"categories":[28],"tags":[],"class_list":["post-714","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sharepoint"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Supporting multiple versions of SharePoint - Collaboris<\/title>\n<meta name=\"description\" content=\"This pot explains how to support multiple versions of SharePoint in a single Visual Studio solution - a great cost saver\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to support multiple versions of SharePoint in a single Visual Studio solution\" \/>\n<meta property=\"og:description\" content=\"This pot explains how to support multiple versions of SharePoint in a single Visual Studio solution - a great cost saver\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/\" \/>\n<meta property=\"og:site_name\" content=\"Collaboris\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Collaboris\/\" \/>\n<meta property=\"article:published_time\" content=\"2013-01-06T21:23:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-03-08T11:51:35+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png\" \/>\n\t<meta property=\"og:image:width\" content=\"820\" \/>\n\t<meta property=\"og:image:height\" content=\"300\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mark Jones\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Collaboris\" \/>\n<meta name=\"twitter:site\" content=\"@Collaboris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mark Jones\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/\"},\"author\":{\"name\":\"Mark Jones\",\"@id\":\"https:\/\/www.collaboris.com\/#\/schema\/person\/1267c19507e47b0069837c8f1a5510dd\"},\"headline\":\"How to support multiple versions of SharePoint in a single Visual Studio solution\",\"datePublished\":\"2013-01-06T21:23:27+00:00\",\"dateModified\":\"2023-03-08T11:51:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/\"},\"wordCount\":1639,\"publisher\":{\"@id\":\"https:\/\/www.collaboris.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png\",\"articleSection\":[\"SharePoint\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/\",\"url\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/\",\"name\":\"Supporting multiple versions of SharePoint - Collaboris\",\"isPartOf\":{\"@id\":\"https:\/\/www.collaboris.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png\",\"datePublished\":\"2013-01-06T21:23:27+00:00\",\"dateModified\":\"2023-03-08T11:51:35+00:00\",\"description\":\"This pot explains how to support multiple versions of SharePoint in a single Visual Studio solution - a great cost saver\",\"breadcrumb\":{\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage\",\"url\":\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png\",\"contentUrl\":\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png\",\"width\":820,\"height\":300},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.collaboris.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How to support multiple versions of SharePoint in a single Visual Studio solution\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.collaboris.com\/#website\",\"url\":\"https:\/\/www.collaboris.com\/\",\"name\":\"Collaboris\",\"description\":\"We make compliance simple\",\"publisher\":{\"@id\":\"https:\/\/www.collaboris.com\/#organization\"},\"alternateName\":\"DocRead\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.collaboris.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.collaboris.com\/#organization\",\"name\":\"Collaboris\",\"alternateName\":\"DocRead\",\"url\":\"https:\/\/www.collaboris.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.collaboris.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2021\/05\/collaboris_logo_small.png\",\"contentUrl\":\"https:\/\/www.collaboris.com\/wp-content\/uploads\/2021\/05\/collaboris_logo_small.png\",\"width\":150,\"height\":40,\"caption\":\"Collaboris\"},\"image\":{\"@id\":\"https:\/\/www.collaboris.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Collaboris\/\",\"https:\/\/x.com\/Collaboris\",\"https:\/\/www.linkedin.com\/company\/collaboris\"],\"description\":\"Collaboris is a Software company that created a policy management tool called DocRead.\",\"email\":\"info@collaboris.com\",\"telephone\":\"02079935140\",\"legalName\":\"Collaboris Ltd\",\"foundingDate\":\"2007-12-03\",\"vatID\":\"GB928895360\",\"numberOfEmployees\":{\"@type\":\"QuantitativeValue\",\"minValue\":\"1\",\"maxValue\":\"10\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.collaboris.com\/#\/schema\/person\/1267c19507e47b0069837c8f1a5510dd\",\"name\":\"Mark Jones\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.collaboris.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b6b12fa3b3a40fc9b46767f25a7d03d2e40ad4a7250d331b66a86b94308c64d?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b6b12fa3b3a40fc9b46767f25a7d03d2e40ad4a7250d331b66a86b94308c64d?s=96&d=mm&r=g\",\"caption\":\"Mark Jones\"},\"url\":\"https:\/\/www.collaboris.com\/author\/markjones333\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Supporting multiple versions of SharePoint - Collaboris","description":"This pot explains how to support multiple versions of SharePoint in a single Visual Studio solution - a great cost saver","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/","og_locale":"en_GB","og_type":"article","og_title":"How to support multiple versions of SharePoint in a single Visual Studio solution","og_description":"This pot explains how to support multiple versions of SharePoint in a single Visual Studio solution - a great cost saver","og_url":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/","og_site_name":"Collaboris","article_publisher":"https:\/\/www.facebook.com\/Collaboris\/","article_published_time":"2013-01-06T21:23:27+00:00","article_modified_time":"2023-03-08T11:51:35+00:00","og_image":[{"width":820,"height":300,"url":"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png","type":"image\/png"}],"author":"Mark Jones","twitter_card":"summary_large_image","twitter_creator":"@Collaboris","twitter_site":"@Collaboris","twitter_misc":{"Written by":"Mark Jones","Estimated reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#article","isPartOf":{"@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/"},"author":{"name":"Mark Jones","@id":"https:\/\/www.collaboris.com\/#\/schema\/person\/1267c19507e47b0069837c8f1a5510dd"},"headline":"How to support multiple versions of SharePoint in a single Visual Studio solution","datePublished":"2013-01-06T21:23:27+00:00","dateModified":"2023-03-08T11:51:35+00:00","mainEntityOfPage":{"@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/"},"wordCount":1639,"publisher":{"@id":"https:\/\/www.collaboris.com\/#organization"},"image":{"@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage"},"thumbnailUrl":"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png","articleSection":["SharePoint"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/","url":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/","name":"Supporting multiple versions of SharePoint - Collaboris","isPartOf":{"@id":"https:\/\/www.collaboris.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage"},"image":{"@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage"},"thumbnailUrl":"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png","datePublished":"2013-01-06T21:23:27+00:00","dateModified":"2023-03-08T11:51:35+00:00","description":"This pot explains how to support multiple versions of SharePoint in a single Visual Studio solution - a great cost saver","breadcrumb":{"@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#primaryimage","url":"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png","contentUrl":"https:\/\/www.collaboris.com\/wp-content\/uploads\/2016\/07\/blue_820x300_sharepoint_img.png","width":820,"height":300},{"@type":"BreadcrumbList","@id":"https:\/\/www.collaboris.com\/how-to-support-multiple-versions-of-sharepoint-in-a-single-visual-studio-solution\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.collaboris.com\/"},{"@type":"ListItem","position":2,"name":"How to support multiple versions of SharePoint in a single Visual Studio solution"}]},{"@type":"WebSite","@id":"https:\/\/www.collaboris.com\/#website","url":"https:\/\/www.collaboris.com\/","name":"Collaboris","description":"We make compliance simple","publisher":{"@id":"https:\/\/www.collaboris.com\/#organization"},"alternateName":"DocRead","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.collaboris.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.collaboris.com\/#organization","name":"Collaboris","alternateName":"DocRead","url":"https:\/\/www.collaboris.com\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.collaboris.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.collaboris.com\/wp-content\/uploads\/2021\/05\/collaboris_logo_small.png","contentUrl":"https:\/\/www.collaboris.com\/wp-content\/uploads\/2021\/05\/collaboris_logo_small.png","width":150,"height":40,"caption":"Collaboris"},"image":{"@id":"https:\/\/www.collaboris.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Collaboris\/","https:\/\/x.com\/Collaboris","https:\/\/www.linkedin.com\/company\/collaboris"],"description":"Collaboris is a Software company that created a policy management tool called DocRead.","email":"info@collaboris.com","telephone":"02079935140","legalName":"Collaboris Ltd","foundingDate":"2007-12-03","vatID":"GB928895360","numberOfEmployees":{"@type":"QuantitativeValue","minValue":"1","maxValue":"10"}},{"@type":"Person","@id":"https:\/\/www.collaboris.com\/#\/schema\/person\/1267c19507e47b0069837c8f1a5510dd","name":"Mark Jones","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.collaboris.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b6b12fa3b3a40fc9b46767f25a7d03d2e40ad4a7250d331b66a86b94308c64d?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b6b12fa3b3a40fc9b46767f25a7d03d2e40ad4a7250d331b66a86b94308c64d?s=96&d=mm&r=g","caption":"Mark Jones"},"url":"https:\/\/www.collaboris.com\/author\/markjones333\/"}]}},"modified_by":"Helen Jones","_links":{"self":[{"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/posts\/714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/comments?post=714"}],"version-history":[{"count":8,"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/posts\/714\/revisions"}],"predecessor-version":[{"id":1374437,"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/posts\/714\/revisions\/1374437"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/media\/2106"}],"wp:attachment":[{"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/media?parent=714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/categories?post=714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.collaboris.com\/wp-json\/wp\/v2\/tags?post=714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}