Monday 10 October 2016

Modify the Dynamics CRM 2013 Developer Toolkit to Function with Dynamics CRM 2016 and Visual Studio 2015


By Johan Küstner

One of the biggest frustrations that I have found as a Dynamics CRM developer is the lack of a new release of the Dynamics CRM Developer Toolkit. Initially, the Developer Toolkit only worked with Visual Studio 2010 in the version that shipped with the Dynamics CRM 2011 SDK. The Dynamics CRM 2013 SDK then included a Developer Toolkit for both Visual Studio 2010 and 2012. But shortly afterwards, Visual Studio 2013 was released and there was no version of the Developer Toolkit forthcoming for Visual Studio 2013. At the date of writing, we are currently on Visual Studio 2015, with a newer version already being primed for release in the near version. So essentially, Microsoft have not released a Developer Toolkit for Visual Studio 2013 and 2015 and for Dynamics CRM 2015 or 2016. I therefore decided to take action and modify the latest Dynamics CRM Developer Toolkit to work with Visual Studio 2013 or 2015 and with Dynamics CRM 2015 or 2016.

If you do not have the time to go through the steps below to do this yourself, here is the download:


For those who are interested, here are the steps that I undertook to achieve this:

Download the Dynamics CRM 2013, 2015 and 2016 SDK


You are going to need to download the latest version of the Dynamics CRM SDK for versions 2013, 2015 and 2016. We will modify the Developer Toolkit within the Dynamics CRM 2013 SDK and we will also replace some of the assemblies and executables in the Developer Toolkit with those in the Dynamics CRM 2015 and 2016 SDK. If you are still using Dynamics CRM 2013, you will only need to download the Dynamics CRM 2013 SDK and if you are still using Dynamics CRM 2015, you will not need to download the Dynamics CRM 2016 SDK. Here are the locations for downloading the Dynamics CRM SDK installers at the time of writing:




Please note that you do not need the UII Framework installer that is also available at these links. Please note also that these links are culture specific to the UK and you can modify the culture in the links to your preferred culture, e.g. change en-gb to en-us.


 

Decompile Dynamics CRM Developer Toolkit MSI with MSI Executable


The next step will be to use msiexec.exe to decompile the Developer Toolkit MSI. I have decided to extract the MSI created for Visual Studio 2012, i.e. CrmDeveloperToolsVS12_Installer.msi. This should be located in the SDK\Tools\DeveloperToolkit folder where you extracted the SDK. Use the following command line to extract the MSI:

msiexec.exe /a <PathToSdk>\SDK\Tools\DeveloperToolkit\CrmDeveloperToolsVS12_Installer.msi /gb targetdir=<YourPreferredTargetPath>\MsiExtract


 

Install WiX Toolset


For the next few steps, you will need to install the WiX Toolset if you haven’t already done so. You can download the latest version from here:



 

Decompile Dynamics CRM Developer Toolkit MSI with WiX Toolset


 We are now going to decompile the Developer Toolkit MSI using dark.exe, which is the WiX Toolset decompiler. Firstly, we need to extract the MSI and create a WXS file:

“%programfiles(x86)%\WiX Toolset vx.x\bin\dark.exe” <PathToSdk>\SDK\Tools\DeveloperToolkit\CrmDeveloperToolsVS12_Installer.msi –o <YourPreferredTargetPath>\WiXExtract\Product.wxs

Next, we need to extract the assemblies from the MSI:

“%programfiles(x86)%\WiX Toolset vx.x\bin\dark.exe” <PathToSdk>\SDK\Tools\DeveloperToolkit\CrmDeveloperToolsVS12_Installer.msi –x <YourPreferredTargetPath>\WiXExtract

In <YourPreferredTargetPath>\WiXExtract you should now have a Product.wxs file and three folders:

·         Binary

·         File

·         Icon


 

Rename Files in the Binary Folder


Next, we are going to rename files in the <YourPreferredTargetPath>\WiXExtract\Binary folder:

·         Rename DefBannerBitmap to DefBannerBitmap.bmp

·         Rename NewFldrBtn to NewFldrBtn.bmp

·         Rename UpFldrBtn to UpFldrBtn.bmp

·         Rename InstallUtil to InstallUtil.ibd

·         Rename MSVBDPCADLL to MSVBDPCADLL.ibd

·         Rename VSDNETCFG to VSDNETCFG.ibd


 

Edit the Product WXS File


Now we are going to edit the Product.wxs file that you created at <YourPreferredTargetPath>\WiXExtract\Product.wxs using dark.exe. Open the Product.wxs file in an editor of your choice, such as Visual Studio 2015 and make the following changes:

On line 5 through to 10, change the SourceFile variable to the correct details:

Before:

<Binary Id="InstallUtil" SourceFile="FILE NOT EXPORTED, USE THE dark.exe -x OPTION TO EXPORT BINARIES" />

<Binary Id="MSVBDPCADLL" SourceFile="FILE NOT EXPORTED, USE THE dark.exe -x OPTION TO EXPORT BINARIES" />

<Binary Id="VSDNETCFG" SourceFile="FILE NOT EXPORTED, USE THE dark.exe -x OPTION TO EXPORT BINARIES" />

<Binary Id="DefBannerBitmap" SourceFile="FILE NOT EXPORTED, USE THE dark.exe -x OPTION TO EXPORT BINARIES" />

<Binary Id="UpFldrBtn" SourceFile="FILE NOT EXPORTED, USE THE dark.exe -x OPTION TO EXPORT BINARIES" />

<Binary Id="NewFldrBtn" SourceFile="FILE NOT EXPORTED, USE THE dark.exe -x OPTION TO EXPORT BINARIES" />

 

After:

<Binary Id="InstallUtil" SourceFile="Binary\InstallUtil.ibd" />

<Binary Id="MSVBDPCADLL" SourceFile="Binary\MSVBDPCADLL.ibd" />

<Binary Id="VSDNETCFG" SourceFile="Binary\VSDNETCFG.ibd" />

<Binary Id="DefBannerBitmap" SourceFile="Binary\DefBannerBitmap.bmp" />

<Binary Id="UpFldrBtn" SourceFile="Binary\UpFldrBtn.bmp" />

<Binary Id="NewFldrBtn" SourceFile="Binary\NewFldrBtn.bmp" />

On line 350, change the SourceFile variable to the correct details:

Before:

<Icon Id="_853F67D554F05449430E7E.exe" SourceFile="FILE NOT EXPORTED, USE THE dark.exe -x OPTION TO EXPORT BINARIES" />

After:

<Icon Id="_853F67D554F05449430E7E.exe" SourceFile="Icon\_853F67D554F05449430E7E.exe" />

Perform a Replace operation within the file, replacing Source="SourceDir\ with Source=".

Perform a Replace operation within the file, replacing

"Microsoft Dynamics CRM Developer Toolkit for Visual Studio 2012"

With

"Microsoft Dynamics CRM Developer Toolkit for Visual Studio 2015".

Go to line 376 and replace

Key="Software\Microsoft\VisualStudio\11.0\Setup\VS"

With

Key="Software\Microsoft\VisualStudio\14.0\Setup\VS".

Go to line 17 and replace

Value="[VISUALSTUDIO_PATH]Common7\IDE\Extensions\Microsoft\Dynamics CRM 2011 Developer Tools\1.0"

With

Value="[VISUALSTUDIO_PATH]Common7\IDE\Extensions\Microsoft\Dynamics CRM 2016 Developer Tools\1.0".

Save and close the Product.wxs file.


 

Create the Windows Installer XML Setup Project


Create a new Windows Installer XML Setup Project in Visual Studio 2015:


Close Visual Studio 2015 and copy all the contents of the <YourPreferredTargetPath>\WiXExtract folder into the <YourPreferredTargetPath>\DeveloperToolkitSetupProject\DeveloperToolkitSetupProject folder, replacing the existing contents if there are files with matching names, e.g. replacing Product.wxs.

Now you can reopen the Visual Studio Solution.

We now need to add the folders to our project as follows:

In Solution Explorer, click Show All Files:



Right-click the Binary, File and Icon folders and select Include in Project:




Now you can save your Visual Studio Solution.


 

Modify the VSIX Package


Make sure that you have installed a tool that can open archive files, e.g. 7-zip from http://7-zip.org/

Open the <YourPreferredTargetPath>\MsiExtract\Visual Studio folder and use your preferred tool, e.g. 7-zip, to open the Microsoft.CrmDeveloperTools.vsix file.

Copy extension.vsixmanifest to a location of your choice.


Edit extension.vsixmanifest using your preferred editor, e.g. Notepad.

Replace all instances of

Version=”[11.0,12.0)”

With

Version="[14.0,15.0)".

Replace all instances of

Dynamics CRM 2013

With

Dynamics CRM 2016 or your preferred Dynamics CRM version.

Replace all instances of

Visual Studio 2012

With

Visual Studio 2015 or your preferred Visual Studio version.

You will then need to replace the extension.vsixmanifest file in the Microsoft.CrmDeveloperTools.vsix archive.

Keep a copy of both the extension.vsixmanifest file and the Microsoft.CrmDeveloperTools.vsix file for later use.


 

Modify the Microsoft Dynamics CRM Developer Tools Assembly


Before starting this step, make sure you have .NET Framework 2.0, .NET Framework 3.5 and .NET Framework 4.0 or .NET Framework 4.5 installed, which should all be standard features that you can add for Windows. This is in order to reference mscorlib.dll, version 2.0.0.0. You will also need to install .NET Framework 1.0, which you download from here:


Please note that the .NET Framework 1.0 does not install on machines with a 64 bit version of Windows running. To get to the mscorlib.dll version 1.0.3300.0, you will need to do the following:

Extract the .NET Framework 1.0 executable as follows:

dotnetfx.exe /C /T:<YourPreferredTargetPath>

In the destination folder, use WiX Toolset’s dark.exe to get the files from the MSI:

“%programfiles(x86)%\WiX Toolset vx.x\bin\dark.exe” <PathToNetFxMsi>\netfx.msi –x <YourPreferredTargetPath>

In the <YourPreferredTargetPath>\File folder, find the file called FL_mscorlib_dll_____X86.3643236F_FC70_11D3_A536_0090278A1BB8 and rename it to mscorlib.dll.

You will now have the mscorlib.dll required to reference version 1.0.3300.0.

Alternatively, if you have Visual Studio 2010, 2012 and 2013 as well as 2015, then all the required assemblies should then be available and you do not need to go through the effort of installing the .NET Frameworks if they are not installed.

You will need to install a tool such as .Net Reflector or Telerik JustDecompile to edit the assembly. I would recommend the Telerik JustDecompile tool as the .Net Reflector tool seems to clash with the Dynamics CRM Developer Toolkit in Visual Studio.

Open the <YourPreferredTargetPath>\MsiExtract\Visual Studio folder and then open the Microsoft.CrmDeveloperTools.dll using your preferred tool.


You may get requests to advise where referenced assemblies reside. It is very important that you specify these. You will find Microsoft.Xrm.Sdk.dll in <YourPreferredTargetPath>\MsiExtract\Visual Studio.


Next, in the Tree View, expand Microsoft.CrmDeveloperTools, expand Microsoft.CrmDeveloperTools.dll and then expand References.


Right-click on mscorlib, Version 1.0.3300.0, which should have a warning triangle next to it and click Locate Assembly.


Now you need to locate the mscorlib.dll that you extracted from the .NET Framework 1.0 installer earlier.


Make sure that the warning triangle disappears.


Now we are going to update the assembly to work with Visual Studio 2015.

Perform a search for the term 11.0:


Double-click the result found in the search:



At the top of the screen, select Plugins and then select Reflexil.



Select line 04, then right-click the line and click Edit.

In the Operand, find where it says 11.0 and change it to 14.0 and then click Update.



In the Tree View, at the very top level of the Tree, right-click on Microsoft.CrmDeveloperTools, select Reflexil vx.x and then click Save as…



Save the file with the suggested name and then move the file to the same location where you saved the extension.vsixmanifest file and the Microsoft.CrmDeveloperTools.vsix file. Change the File Name to Microsoft.CrmDeveloperTools.dll after you have moved the file.


 

Modify the Installer Actions Module Assembly


Open the <YourPreferredTargetPath>\MsiExtract\Visual Studio folder and then open the InstallerActionsModule.dll using your preferred tool.


Perform a search for the term 11.0 and replace with 14.0.


For the first search result, open the Reflexil Plugin, go to line 11, change 11.0 to 14.0 and then click Update.



For the second search result, go to line 11, change 11.0 to 14.0 and then click Update.



Right-click on InstallerActionsModule at the tope of the Tree in the Tree View and then click Save as…


Save the file with the suggested name and then move the file to the same location where you saved the Microsoft.CrmDeveloperTools.dll, the extension.vsixmanifest file and the Microsoft.CrmDeveloperTools.vsix file. Change the File Name to InstallerActionsModule.dll after you have moved the file.

Replace the Target Files with the Modified Files


Next, you will need to open your WiX Setup Project in Visual Studio. You will now need to search for the corresponding modified file by searching for its name and then use the identity to find the file in the Files folder and replace that file with your modified file.

Open the <YourPreferredTargetPath>\DeveloperToolkitSetupProject\DeveloperToolkitSetupProject\File folder and copy & paste your four modified files into this folder:

·         extension.vsixmanifest

·         InstallerActionsModule.dll

·         Microsoft.CrmDeveloperTools.dll

·         Microsoft.CrmDeveloperTools.vsix

Back in Visual Studio, in your Product.wxs file, perform a search for each of the files above and grab the identity as follows:

extension.vsixmanifest:

Search for extension.vsixmanifest in the Product.wxs file:

On line 70, you will find the following:

<Component Id="C__5321CEFF17F6451190F787E8AA1DC739" Guid="{34E8D4B7-42F9-C936-CA9E-F355B0D7130F}">

    <File Id="_5321CEFF17F6451190F787E8AA1DC739" Name="extension.vsixmanifest" KeyPath="yes" ShortName="EXTENS~1.VSI" DiskId="1" Source="File\_5321CEFF17F6451190F787E8AA1DC739" />

</Component>

Copy the file identity _5321CEFF17F6451190F787E8AA1DC739.

Search for _5321CEFF17F6451190F787E8AA1DC739 in the <YourPreferredTargetPath>\DeveloperToolkitSetupProject\DeveloperToolkitSetupProject\File folder.


Delete the file that is found.


Clear the search result and find the extension.vsixmanifest file in the list.


Rename the extension.vsixmanifest file to _5321CEFF17F6451190F787E8AA1DC739.


InstallerActionsModule.dll:

Search for InstallerActionsModule.dll in the Product.wxs file:

On line 139, you will find the following:

<Component Id="C__CD555B4F255B4F95980277DD499773C6" Guid="{F168C13C-8D98-78D0-31B1-66B5CC6DBAD6}">

    <File Id="_CD555B4F255B4F95980277DD499773C6" Name="InstallerActionsModule.dll" KeyPath="yes" ShortName="INSTAL~1.DLL" Assembly=".net" AssemblyManifest="_CD555B4F255B4F95980277DD499773C6" AssemblyApplication="_CD555B4F255B4F95980277DD499773C6" DiskId="1" Source="File\_CD555B4F255B4F95980277DD499773C6" />

</Component>

Copy the file identity _CD555B4F255B4F95980277DD499773C6.

Search for _CD555B4F255B4F95980277DD499773C6 in the <YourPreferredTargetPath>\DeveloperToolkitSetupProject\DeveloperToolkitSetupProject\File folder.


Delete the file that is found.


Clear the search result and find the InstallerActionsModule.dll file in the list.


Rename the InstallerActionsModule.dll file to _CD555B4F255B4F95980277DD499773C6.


Microsoft.CrmDeveloperTools.dll:

Search for Microsoft.CrmDeveloperTools.dll in the Product.wxs file:

On line 144, you will find the following:

<Component Id="C__D20173011E1946C9B8096A9F8190D92A" Guid="{7144D42D-6A2B-9FF1-A668-0C04D8D420E1}">

    <File Id="_D20173011E1946C9B8096A9F8190D92A" Name="Microsoft.CrmDeveloperTools.dll" KeyPath="yes" ShortName="MICRO~30.DLL" Assembly=".net" AssemblyManifest="_D20173011E1946C9B8096A9F8190D92A" AssemblyApplication="_D20173011E1946C9B8096A9F8190D92A" DiskId="1" Source="File\_D20173011E1946C9B8096A9F8190D92A" />

</Component>

Copy the file identity ="_D20173011E1946C9B8096A9F8190D92A.

Search for ="_D20173011E1946C9B8096A9F8190D92A in the <YourPreferredTargetPath>\DeveloperToolkitSetupProject\DeveloperToolkitSetupProject\File folder.


Delete the file that is found.


Clear the search result and find the Microsoft.CrmDeveloperTools.dll file in the list.


Make a second copy of the Microsoft.CrmDeveloperTools.dll file.


Rename the Microsoft.CrmDeveloperTools.dll file to ="_D20173011E1946C9B8096A9F8190D92A.


On line 264, you will find the following:

<Component Id="C__103D3DE220164427897D6503F265BDE5" Guid="{DD88B855-AF14-1133-0EEF-3712536F7BA5}">

    <File Id="_103D3DE220164427897D6503F265BDE5" Name="Microsoft.CrmDeveloperTools.dll" KeyPath="yes" ShortName="MICROS~6.DLL" Assembly=".net" AssemblyManifest="_103D3DE220164427897D6503F265BDE5" AssemblyApplication="_103D3DE220164427897D6503F265BDE5" DiskId="1" Source="File\_103D3DE220164427897D6503F265BDE5" />

</Component>

 Copy the file identity _103D3DE220164427897D6503F265BDE5.

Search for _103D3DE220164427897D6503F265BDE5 in the <YourPreferredTargetPath>\DeveloperToolkitSetupProject\DeveloperToolkitSetupProject\File folder.


Delete the file that is found.


Clear the search result and find the Microsoft.CrmDeveloperTools - Copy.dll file in the list.


Rename the Microsoft.CrmDeveloperTools - Copy.dll file to _103D3DE220164427897D6503F265BDE5.



 

Compile the Visual Studio WiX Setup Project


Go ahead and compile the Visual Studio Solution.

You will more than likely get two errors:

Severity
Code
Description
Project
File
Line
Suppression State
Error
 
The FileSearch/@ShortName attribute cannot be specified when attribute LongName is present.
DeveloperToolkitSetupProject
Product.wxs
380
 
Error
 
The FileSearch/@ShortName attribute cannot be specified when attribute LongName is present.
DeveloperToolkitSetupProject
Product.wxs
385
 

To get rid of these errors, simply remove the ShortName parameters and the respective values.

Compile the Visual Studio Solution again.

You will now get a new error:

Severity
Code
Description
Project
File
Line
Suppression State
Error
 
Component/@Id='C__D325117EC0E8F14DB8B5285A80115139' has a @Guid value '{5CB4F8DD-3B54-AD3F-296B-EBDBDC2648A7}' that duplicates another component in this package. It is recommended to give each component its own unique GUID.
DeveloperToolkitSetupProject
Product.wxs
147
 

The solution is simple. At line 147, change the GUID from 5CB4F8DD-3B54-AD3F-296B-EBDBDC2648A7 to another GUID of your choice. You can use the built-in GUID generator in Visual Studio to get a new GUID.

Before:

<Component Id="C__D325117EC0E8F14DB8B5285A80115139" Guid="{5CB4F8DD-3B54-AD3F-296B-EBDBDC2648A7}">

    <File Id="_D325117EC0E8F14DB8B5285A80115139" Name="Microsoft.Crm.Sdk.Proxy.DLL" KeyPath="yes" ShortName="MICRO~31.DLL" Assembly=".net" AssemblyManifest="_D325117EC0E8F14DB8B5285A80115139" AssemblyApplication="_D325117EC0E8F14DB8B5285A80115139" DiskId="1" Source="File\_D325117EC0E8F14DB8B5285A80115139" />

</Component>

After:

<Component Id="C__D325117EC0E8F14DB8B5285A80115139" Guid="{A603AD53-2FD8-469F-94C4-245A6197C605}">

    <File Id="_D325117EC0E8F14DB8B5285A80115139" Name="Microsoft.Crm.Sdk.Proxy.DLL" KeyPath="yes" ShortName="MICRO~31.DLL" Assembly=".net" AssemblyManifest="_D325117EC0E8F14DB8B5285A80115139" AssemblyApplication="_D325117EC0E8F14DB8B5285A80115139" DiskId="1" Source="File\_D325117EC0E8F14DB8B5285A80115139" />

</Component>

I used Guid="{A603AD53-2FD8-469F-94C4-245A6197C605}".

However, when you compile the Visual Studio Solution, you will get two new errors:

Severity
Code
Description
Project
File
Line
Suppression State
Error
 
ICE30: The target file 'MICRO~12.DLL|Microsoft.Crm.Sdk.Proxy.dll' is installed in '[TARGETDIR]\Visual Studio\' by two different components on an LFN system: 'C__646D85FDD00C4F6CBCE0E424030A8F09' and 'C__D325117EC0E8F14DB8B5285A80115139'. This breaks component reference counting.
DeveloperToolkitSetupProject
Product.wxs
148
 
Error
 
ICE30: The target file 'MICRO~12.DLL|Microsoft.Crm.Sdk.Proxy.dll' is installed in '[TARGETDIR]\Visual Studio\' by two different components on an LFN system: 'C__646D85FDD00C4F6CBCE0E424030A8F09' and 'C__D325117EC0E8F14DB8B5285A80115139'. This breaks component reference counting.
DeveloperToolkitSetupProject
Product.wxs
76
 

The simple solution is to delete line 147 through to line 149. What is happening here is that the same file is being copied to the same location twice by the installer, for some reason. This may have been some sort of issue that the original Visual Studio Setup Project had that was not resolved and has carried through to the WiX Setup Project.

After deleting line 147 through to line 149, compile the Visual Studio Solution again.

You will get another error:

Severity
Code
Description
Project
File
Line
Suppression State
Error
 
Unresolved reference to symbol 'Component:C__D325117EC0E8F14DB8B5285A80115139' in section 'Product:{BACDFCA3-6A16-4195-AC18-2BE34E154329}'.
DeveloperToolkitSetupProject
Product.wxs
331
 

This is because we have deleted the file at lines 147 through to 149 and the installer cannot find the reference to the file that is being added as a component here at line 331.

To fix the issue, delete line 331.

If you now compile the Visual Studio Solution, it should now compile without errors. You are welcome to fix the warnings, but these would not really make a difference to functionality.


 

 

Install the New Developer Toolkit


Open the <YourPreferredTargetPath>\DeveloperToolkitSetupProject\DeveloperToolkitSetupProject/bin/Debug folder (or the Release folder or other configuration folder, depending on which configuration you used).

You should see two files:

·         DeveloperToolkitSetupProject.msi

·         DeveloperToolkitSetupProject.wixpdb

The DeveloperToolkitSetupProject.wixpdb file can be used for debugging the WiX Installer Project. We will ignore this file completely.

Execute the DeveloperToolkitSetupProject.msi file.




Now you can test the Developer Toolkit and hope that it works correctly.

13 comments:

  1. Hi Johan, I have installed your toolkit but not sure why it still refers to CRM 2013 DLLs (version 6.0.0.0) though it is connected to CRM 2016. Did you also get the same issue ? and Do you think manual replacement of DLLs is the only way out? Thanks, Vaibhav

    ReplyDelete
    Replies
    1. Hi Vaibhav.

      I have deliberately left the version 6.0.0.0 Dynamics CRM assemblies and CrmSvcUtil.exe in, as I did not see a benefit to changing them to version 7.0.0.0 or version 8.0.0.0. I actually did change it to use the version 7.0.0.0 assemblies and CrmSvcUtil.exe to test the Code Generation Extension using Microsoft.Xrm.Client.CodeGeneration.dll, but I wasn't impressed with the resulting Entities.cs. I believe that my own CrmSvcUtil.exe Code Generation Extension is better - the one I refer to in this blog. I also changed it to work with the 8.0.0.0 assemblies and CrmSvcUtil.exe, but discovered that the version 8.0.0.0 CrmSvcUtil.exe requires the ConnectionString, either in the CrmSvcUtil.exe.config or as a command line parameter. I then stuck with version 6.0.0.0. If you want, you can use Reflexil to change the version of the Dynamics CRM assemblies that are referenced (it is just Microsoft.Xrm.Sdk and Microsoft.Crm.Sdk.Proxy) to version 7.0.0.0 or 8.0.0.0. But note that Microsoft.Xrm.Sdk version 8.0.0.0 references System.IdentityModel and not Microsoft.Identity if you're going to change the versions to 8.0.0.0. That means that you have to use Reflexil to remove the Microsoft.IdentityModel reference and add the System.IdentityModel reference. There is also somewhere in the code, I can't remember exactly where, that explicitly references Microsoft.IdentityModel types, which have to be changed to System.IdentityModel types. Don't forget to also replace the assemblies and CrmSvcUtil.exe in the Files folder of the WiX Installer Project with the version 7.0.0.0 or version 8.0.0.0 files. You should also be aware that CrmSvcUtil.exe version 8.0.0.0 has additional assembly dependencies.

      Johan

      Delete
  2. This comment has been removed by the author.

    ReplyDelete
  3. Hi We get the error Could not load file or assembly 'Microsoft.CrmDeveloperTools, PublicKeyToken=31bf3856ad364e35'
    Any way to solve this problem ?

    ReplyDelete
    Replies
    1. Hi Jack,

      Did you download the MSI from the Visual Studio Gallery or were you attempting to follow the steps on this blog to create the MSI yourself?

      Johan

      Delete
  4. I downloaded and ran the MSI. It went fine but when adding a workflow activity it gives this error. I can fine connect to a solution.

    ReplyDelete
    Replies
    1. Ah - yes. I get the same error. I have noticed that it does create the Custom Workflow Activity in Visual Studio though. This could potentially be an issue with Visual Studio 2015. I will need to debug this to get to the bottom of the issue. Can you live with this in the meantime? I think that it still creates the Custom Workflow Activity ok.

      Johan

      Delete
  5. No problem, we are just testing your work so no hurry :) Thanks

    ReplyDelete
  6. Hi again
    I does create the workflow code but doesn't add it to the RegisterFile.crmregister because it doesn't launch the program in which to enter this data.
    How is debugging going ? :)

    ReplyDelete
    Replies
    1. Hi Jack,

      I'm sorry to say that my project work (paid work) has been keeping me too busy.

      Regards,

      Johan

      Delete
    2. Hi Jack,

      I discovered a bug with the CodeWorkflowWindow.xaml file in the crmclient\UI folder structure of the Microsoft.CrmDeveloperTools assembly. It seems that the xmlns:controls declaration included the assembly parameter, which was causing the issue with Visual Studio 2015.

      The problem is that the XAML gets compiled as a BAML and the only way to edit the BAML is to edit the resource in a Hex Editor.

      I have extracted the assembly using one of the disassemblers into Visual Studio. However, as the assembly is compiled without debug symbols, the disassembler doesn't decompile perfectly and I'm in the process of attempting to resolve the identified errors when compiling.

      Regards,

      Johan

      Delete
    3. Great, hope you find the solution. It would be great to have this tool in VS 2015 :)

      Delete
  7. I understand your priorities :)

    ReplyDelete