Prefix Reserved
dotnet add package Microsoft.CrmSdk.CoreTools --version                
NuGet\Install-Package Microsoft.CrmSdk.CoreTools -Version                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Microsoft.CrmSdk.CoreTools" Version="" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Microsoft.CrmSdk.CoreTools --version                
#r "nuget: Microsoft.CrmSdk.CoreTools,"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Microsoft.CrmSdk.CoreTools as a Cake Addin
#addin nuget:?package=Microsoft.CrmSdk.CoreTools&version=

// Install Microsoft.CrmSdk.CoreTools as a Cake Tool
#tool nuget:?package=Microsoft.CrmSdk.CoreTools&version=                

This package contains the official SDK tools authored by the Microsoft Common Data Service SDK team.
The included command line tools are installed in the project's bin\coretools folder.

There are no supported framework assets in this package.

Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

NuGet packages (13)

Showing the top 5 NuGet packages that depend on Microsoft.CrmSdk.CoreTools:

Package Downloads

Simple and Lightweight deployment task runner for Dynamics 365


Create Dynamics 365 CE (Online only) plugins according to SOLID software princips. This package provide the basic infrastructur for building plugins with services and inject these into the Dynamics 365 CE plugin pipeline.


Provides core interfaces/classes for use during proxy class generation with XrmToolkit.


MSBuild.Xrm.SourceControl provides a simple but powerful method for extracting Dynamics 365 customisations. The extension uses PowerShell scripts that can seamlessly extract customisations from a Dynamics 365 instance and then subsequently rebuild them into a zipped Solution file ready for import when necessary. The scripts use the SolutionPackager.exe tool provided by the Dynamics 365 SDK. It supports file mappings, managed and unmanaged solutions, and the export of AutoNumber and Calendar settings. Please find the documentation through the Project Site link.


Kipon.Xrm.Tools - tool to generate and deploy Dynamics 365 CE items

GitHub repositories (2)

Showing the top 2 popular GitHub repositories that depend on Microsoft.CrmSdk.CoreTools:

Repository Stars
An open-source library for building Dynamics CRM XRM solutions using Script#, jQuery & Knockoutjs.
xRM CI Framework provides you with the tools automate the build and deployment of your CRM Solution. Using the framework to implement a fully automated DevOps pipeline will allow you to deploy more frequently with added consistency and quality.
Version Downloads Last updated 747 7/13/2024 77,161 11/28/2023 9,626 11/8/2023 59,677 7/20/2023 59,319 4/21/2023 3,412 4/20/2023 189,755 7/11/2022 2,044,242 5/13/2022 39,358 4/25/2022 77,565 3/9/2022 1,504,485 10/25/2021 350,868 9/22/2021 56,036 8/30/2021 513,832 4/29/2021 21,842 4/7/2021 163,975 1/6/2021 626,212 11/20/2020 502,061 7/15/2020 34,328 7/1/2020 97,907 6/12/2020 51,581 6/2/2020 70,235 4/20/2020 3,542 4/20/2020 262,017 3/25/2020 111,472 2/11/2020 112,298 12/18/2019 88,098 12/5/2019 25,865 11/7/2019 12,424 10/25/2019 90,163 10/16/2019 32,908 9/11/2019 133,125 5/23/2019 133,656 4/3/2019 95,876 2/28/2019 15,194 2/7/2019 160,757 9/20/2018 16,622 9/17/2018 43,525 7/6/2018 233,041 11/15/2017 5,992 10/23/2017 56,429 8/29/2017 102,973 4/12/2017 8,009 3/22/2017 5,107 3/3/2017 6,377 12/10/2016
8.2.0 12,020 11/3/2016 42,362 5/26/2016 5,358 5/9/2016
8.1.0-preview 4,279 4/21/2016 17,227 2/22/2016
8.0.2 4,438 2/20/2016
8.0.1 40,654 12/15/2015
8.0.0 8,348 12/3/2015
8.0.0-preview2 4,260 11/23/2015
7.1.1 9,034 8/21/2015
7.1.0 12,888 4/28/2015
7.1.0-preview 4,497 3/17/2015
7.0.1 10,359 3/10/2015 6,488 1/14/2015 5,313 12/3/2014 4,966 12/2/2014
7.0.0 5,559 10/23/2014

These tools may be used for application and solution development. The Microsoft .NET Framework 4.6.2 must be installed on the computer where these tools are to execute.

For information about downloading the tools, see
Several updates to deployment settings generator.
Updated Core SDK to 9.2.23111.x
       - fix unpacking of AppModules to correct directory
       - fix exception "key item already exists" when packaging solutions with CanvasApps and packageType:Both
       - Added #pragma warning disable CS1591 / #pragma warning restore CS1591 surrounding generated code for C# to comply with Code Quality rules.
       - Moved CrmServiceUtil Version number to a normal comment in the code vs a NS comment.
       - support for Korea and Norway GEOs
- Added new behavior to sync the fully qualified name of a plugin in a solution assets to the fully qualified name of the plugin included in the solution itself.
           Enabled by default, can be disabled by setting /fp:false on command line.
           Effective only during Pack Operations.
           This will allow you to use the file mapping features of solutionpackager for plugins and maintain the public signature of the PluginAssembly build added to the solution.
       - fix handling of CanvasApp where app name and paths to composite files (.msapp, image) differ; file name reference in meta xml is now source of truth
   - fixed bool options on cmdline to accept true / false vs existing + / -.
       Formalized EXPERIMENTAL options to cmdline properties.
       - Added support for filtering the entities codegenerated via command line switch.  /entitynamesfilter:<semicolon list>
           Ex:  /entitynamesfilter:account;contact;lead - will emit only the account, contact and lead entities
       - Added support for filtering the messages codegenerated via command line switch. /messagenamesfilter:<semicolon list>
           Must be used with the /includeMessages
           - this feature support wild card filtering for begins with or ends with
           Ex: begins with: "/includeMessages  /messagenamesfilter:msdy_*;" - includes all messages that start with msdy_.
           Ex: ends with: "/includeMessages  /messagenamesfilter:*mymessage;" - includes all messages that end with mymessage.
           Ex: in: "/includeMessages  /messagenamesfilter:msdyn_testmessage;new_mymessage01;new_mymessage02" - includes only messages in the list in generated code.
       - Added new cmdline operations:
           /legacyMode - when present, causes CrmSvcUtil to behave in a manner pre February 2022.
           /splitfiles - when present, causes CrmSvcUtil to emit a file per class to the output directory
           /generateGlobalOptionSets - when present, causes GlobalOptionSets to be generated.
           /outdir - works with /splitfiles and specifies the directory to write model folder too.
       - Added duplicate optionset property name detection, duplicate optionset properties will now appear as optionName#
       - Fixed optionset name generation if the optionset name starts with a digit., such optionsets will now appear as _<optionname>
       - Added Enum's for Optionsets that are name addressable
       - Added validation for either /out or /outdir + /splitfiles
           Crmsvcutl splitting files without global optionsets to folder
               CrmSvcUtil.exe /il /n:MyNameSpace /entitynamesfilter:account;systemuser;role /emitfc /splitfiles /svcctx:dvSvcContext /outdirectory:E:\src\myproject\connecttoDv\Model /sgca

           Crmsvcutl splitting files with global optionsets to folder
               CrmSvcUtil.exe /il /n:MyNameSpace /entitynamesfilter:account;systemuser;role /emitfc /splitfiles /svcctx:dvSvcContext /outdirectory:E:\src\myproject\connecttoDv\Model /sgca /generateGlobalOptionSets
   CrmServiceUtil -
       - Added support for emitting fields and an enum within the codegended object using the /emitfieldsclasses or /emitfc
       // Note: These features can only be supplied on the cmdline currently.
       - Added support for filtering the entities codegenerated via command line switch.  /entitynamesfilter:<semicolon list>
           Ex:  /entitynamesfilter:account;contact;lead - will emit only the account, contact and lead entities
       - Added support for filtering the messages codegenerated via command line switch. /messagenamesfilter:<semicolon list>
           Must be used with the /includeMessages
           - this feature support wild card filtering for begins with or ends with
           Ex: begins with: "/includeMessages  /messagenamesfilter:msdy_*;" - includes all messages that start with msdy_.
           Ex: ends with: "/includeMessages  /messagenamesfilter:*mymessage;" - includes all messages that end with mymessage.
           Ex: in: "/includeMessages  /messagenamesfilter:msdyn_testmessage;new_mymessage01;new_mymessage02" - includes only messages in the list in generated code.
       - add support for ModernSiteMap
       - Added auto type filtering based on version of SDK Libs available to CrmServiceUtil at time of use. this will reduced the frequency of classes being created that are not supported by the current SDK libs
       - Added some timing and status information to the general console ui.
       - Updated online login flows to always use oAuth flows for connection to Dataverse online. Note, this does not apply to connection strings.
   All Tools:
   - Updated Newtonsoft.Json to v11.0.2 to match server.
   - Updated to latest BatchedTelemetry.
       - Fix XML declaration and encoding when packaging in localization files
       - Support for license/service plan entities
       - Added Support to generate properties for EntitySetName, EntityCollectionName
       - Added new command line parameter to support removing the Generated Code Attribute from every class
           Command line parameter is /SuppressGeneratedCodeAttribute or /sgca for short.
       - Added Support to detect and modify the use of reserved SDK names by SolutionAware Entities.
           This should cut down on the issues seen when a solution aware entity includes a field name like "EntityLogicalName"
           Should this occur, a the class member will end up with the name "EntityLogicalName1"
       - Fixed an issue where an Empty Enum would be generated for an optionset with no members.
           Going forward, if an OptionSet exists with no members, it, and any property that utilizes it will be excluded from code gen.
       - Fixed an issue where an invalid SDK Message mapping could cause a null exception in the CrmServiceClientUtil.
           This edge case has appeared in a few environments with enough consistency to warrant a fix to the tool to handle that state.
       - Correctly roundtrip empty NavigationSettings in AppModule
       - Exception will be thrown when canvas app doesn't have any matching filename with its name
       - Fixed crash when more than one SolutionPackager was running in parallel
       - Fixed args parsing issue when args has backslash followed by a quote
       - Added support for localization of sharded components
       Fixed Authority property data loss post clone process
       Support service-side sharding of component files during extract and pack. Consequence of this when packing a solution zip: any subfolder and its files in the solution's root folder will be treated as potential component files and added to the Folders with names as bin/obj will be ignored during extract and pack.
       Support processing files longer than 260 chars
       Fix adding localization duplicates when writing resources into .resx file
       Improved performance while handling localized files
       Fixed crash when the same component file was referenced from different locations using web vs windows path to that file
   Fixed a bug with components in managed solutions when the user was not passing packagetype argument.
       - respect unmanaged SiteMap.xml if packing with '/useUnmanagedFileForMissingManaged'
       - fix name detection in EnvironmentVariable components
       - emit actionable error message when referenced formula xaml file is missing in
   Fixed a bug with how errors are handled when they are raised from ADAL 3.19+.  MFA Force Login will now work properly again.
   Added 3 new GEO's to Selection List.
       Region Name - RegionCode:
           United Arab Emirates - UAE
           South Africa - ZAF
           Germany (Go Local) - GER        
   SolutionPackager: - Added anonymous telemetry to SolutionPackager; to opt out use PowerApps CLI, see:
   [PowerApps CLI telemetry](
   ADAL 3.19+ is now required for this library.  ADAL 2.x clients will need to be updated to use ADAL 3.x+
   Added Support for Current User ID login when using Online flows with oAuth ( Including constructor/connection string support )
   Added Support for ClientID Secret Auth when using oAuth flows. ( Including constructor/connection string support )

   - support for Environment Variables (definitions and values)
   - support for Connectors
   - when packing components/subcomponents that distinguish unmanaged and managed XML files (e.g. AppModuleSiteMap, AppModule, FormXml),
       then use an unmanaged file if a '*_managed.xml' file cannot be found
       This is an opt-in behavior, selected by the new command line param: '/useUnmanagedFileForMissingManaged'
   - fixed NullReferenceException when package type was not specified and packaging both managed & unmanaged
   bug fixes SolutionPackager:
   - allow relative folder paths (no longer 'invalid URL' errors)
   - RootComponentValidation for generic components now only warns, since a generic component cannot be validated
   bug fixes:
   - CustomControl: issue helpful warnings and auto-generate metadata XML for incompletely migrated PCF controls
   - CrmServiceUtil: fix its assembly version to (binary content already had 9.x functionality, but previous version showed misleadingly as being 8.x)
   SolutionPackager: pack from single AppModuleSiteMaps file for packageType=both unless an explicit AppModuleSiteMap_managed.xml file is found
   CrmSvcUtil: Added Support for China Geo
   - support extract/pack for CustomControls, their custom manifest and control resources
   - support extract/pack Flow and CanvasApp
   - support extract/pack for not yet supported components; information in Customizations.xml and component files
   will be extracted and packed without roundtrip loss, but no parsing or component-specific checks
   Fixed bug in CrmServiceClient which would cause some OnPrem connections to fail with an error "Item already added to List"
   Minor Pref Improvements
   Updated to include Fixed version of CrmServiceClient and login control for new US Geo ( US Gov High )
   Applies to CrmSvcUtil primarily
   Note .net 4.6.2 is now required as a baseline
   Fixed AppModuleSiteMap to support both unmanaged and managed local files side-by-side
   Corrected Code Sign issue on SolutionPackager
   Updated for CDS/XRM release
   Fixed an issue in SolutionPackager.exe where it was incorrectly adding a visualizations node to savedqueries nodes Updated for CDS/XRM release
   Updated with Xrm.Tooling.Connector support
   Added new dependencies for Xrm.Tooling.Connector.dll Adding missing file for interactive use of CrmServiceUtil.  Will enabled the /il switch. 9.0 Initial Release
9.0 Initial Release
       Major updates to solution packager to support new component types. *note: SolutionPackager 8.x is not compatible with all component types in 9.x +
       New interfaces to support certificate based auth.
       Added support to skip discovery
       Added Clone connection support of OAuth based connections
       Added New Authentication type to support externally hosted auth.
       **Note: Interface for Xrm.Tooling.Connector is *NOT* Final. there are new API interfaces that will be surfaced before GA.
       Seveal preformance updates.
   Fix to memory leak in Microsoft.Xrm.Tooling.Connector.TraceLoggerBase.  Trace Listener collection would not be released within a process over a very long time frame over multiple connections. This would manifest as increasing memory consumption over a very long period.
   Fix cleans this up on the .dispose() call on the CrmServiceClient.
   Note: if you have built your own logger based on the Microsoft.Xrm.Tooling.Connector.TraceLoggerBase, you must call .dispose() when you are done with it to clean up the listener collection assigned to it.
   Addressed an issue with customers who use optionset type generators and or linq class access that do not have a handler to define type enum’s for optionsets.  This update will provide support for older behaviors in addition to supporting developer who use enum based optionset generators
   CrmSvcUtil.exe :
       Updated to correct version of crmsvcutil for the current version of CRM that exposes all command line switches
       Fixes in dependency mapper and that caused issues with some solutions Fix of dependency issue in nuget package. Now properly requires .net 4.5.2 as a baseline Refreshed from current release
   Fixed site map packing issue in solutionpackager.exe
8.2.0: Removed Deprecated Assemblies and Executables. Updated to current bits. Updated the Microsoft.IdentityModel.Clients.ActiveDirectory assemblies as required by the Xrm Tooling assemblies.
8.1.0: CRM Online 2016 Update 1
8.1-preview: Pre-release CRM Online 2016 Update 1 UR1 (Update Rollup 1) with customer related hotfix
8.0.2: UR1 (Update Rollup 1)
8.0.1: GA (General Availability)
8.0.0: RTM release

* The CrmSvcUtil.exe program has been updated with additional command line parameters. For more information, run the program with no parameters to see the online help.