ImranAkram.XTB.AutoDeployer
1.2026.1.5
dotnet add package ImranAkram.XTB.AutoDeployer --version 1.2026.1.5
NuGet\Install-Package ImranAkram.XTB.AutoDeployer -Version 1.2026.1.5
<PackageReference Include="ImranAkram.XTB.AutoDeployer" Version="1.2026.1.5" />
<PackageVersion Include="ImranAkram.XTB.AutoDeployer" Version="1.2026.1.5" />
<PackageReference Include="ImranAkram.XTB.AutoDeployer" />
paket add ImranAkram.XTB.AutoDeployer --version 1.2026.1.5
#r "nuget: ImranAkram.XTB.AutoDeployer, 1.2026.1.5"
#:package ImranAkram.XTB.AutoDeployer@1.2026.1.5
#addin nuget:?package=ImranAkram.XTB.AutoDeployer&version=1.2026.1.5
#tool nuget:?package=ImranAkram.XTB.AutoDeployer&version=1.2026.1.5
Auto Deployer Tool in XrmToolBox
Auto Deployer is an XrmToolBox plugin that watches local files and automatically deploys updates to Dataverse / Dynamics 365.
It currently supports:
- Plugin Assembly auto-update (watch a
.dll, update the plugin assembly when the file changes) - Web Resource auto-deploy (watch selected local files and update/publish matching Dataverse Web Resources)
- Plugin Package auto-update (Online only) (watch a
.nupkg, upload it to a selected Dataverse Plugin Package)
Features
✅ Plugin Assembly auto-deploy
- Watch one or more plugin assembly
.dllfiles - When the file changes, the tool updates the corresponding Plugin Assembly in Dataverse
- Logs actions and results in the tool output pane
✅ Web Resource auto-deploy
Configure:
- Root folder (local build output folder)
- Prefix (Dataverse web resource prefix, e.g.
cint_) - Patterns (file globs like
scripts\*.js) - Publish after update (on/off)
- Debounce (ms) to batch rapid rebuilds
Workflow:
- Scan local folder to discover files that match the patterns
- The tool auto-generates
CrmNameas:{prefix}/{relativePath} - The grid is not meant to be edited directly (except the Watch checkbox)
- Watch only mappings where Watch = true
- Upload updated content on change, and optionally publish
✅ Plugin Package auto-deploy (Online only)
- Watch a Dataverse Plugin Package
.nupkg - Select the target Plugin Package record from Dataverse
- On file change, the tool uploads the
.nupkgto the package file column (pluginpackage.package) - This menu/feature is not available for on-prem connections
Requirements
- XrmToolBox (latest recommended)
- A Dataverse / Dynamics 365 connection with permissions to:
- Update Plugin Assemblies (plugin assembly mode)
- Update Web Resources + Publish (web resource mode)
- (Online) Update Plugin Packages (plugin package mode)
Getting Started
1) Install / Run in XrmToolBox
- Build the project
- Copy the plugin output to your XrmToolBox Plugins folder (or use your normal XrmToolBox dev workflow)
- Start XrmToolBox and open Auto Deployer
2) Connect to an environment
The tool is connection-aware. Configuration is stored per connection.
Using Plugin Assembly Watching
- Click Add → Plugin Assembly
- Select a plugin
.dll - The tool starts watching the file
- Rebuild your project → when the
.dllchanges, Auto Deployer updates the plugin assembly - Select an item in the list to see detailed logs
Tip: Keep your build output stable (same path) so the watcher doesn’t need to be reconfigured.
Using Web Resource Watching
Click Add → Web Resources
Configure:
- Root folder
Example:C:\Git\MySolution\dist\gdpr - Prefix
Example:cint_ - Patterns (one per line)
Examples:scripts\*.js content\*.css images\*.png - Publish after update (recommended ON)
- Debounce (default 1500ms is a good start)
- Root folder
Click Scan
- Adds matching local files to the grid (without duplicates)
- Updates
CrmNamefor existing rows based on the current Prefix - Auto-generates
CrmNameas:{prefix}/{relativePath}
Set Watch = true for the rows you want actively monitored
Click Validate
- Checks local settings (duplicates, missing files)
- If connected, checks whether the
CrmNameexists in Dataverse - Highlights cells:
- Red = local error (duplicates / missing file) or not found in Dataverse
- Green = OK
Click Save
- Configuration is saved for the current connection
- Watchers are created for rows where Watch = true
How Web Resource Mapping Works
For each watched mapping:
RelativePath is the local path relative to Root folder
Example:scripts\my_script.jsCrmName is the Dataverse Web Resource name derived from Prefix
Example:cint_/scripts/my_script.js
On file change, the tool:
- Uploads the new content to that Web Resource
- Optionally publishes (if enabled)
- Logs result to the main log pane
Note: The grid columns are intentionally read-only (except Watch).
If the Prefix was wrong earlier, use Scan or Validate after correcting Prefix to rebuild names.
Using Plugin Package Watching (Online only)
- Click Add → Plugin Package (only shown for Dataverse online)
- Select a
.nupkgfile on disk - Select the target Plugin Package from the environment
- The tool starts watching the file
- Rebuild/pack → when the
.nupkgchanges, Auto Deployer uploads the new package content - Select an item in the list to see detailed logs
Configuration & Persistence
Settings are stored using the standard XrmToolBox settings mechanism:
- Saved per connection (so each environment has its own config)
- Loaded automatically when the connection changes
- Watchers are re-created when you connect (based on saved config)
Troubleshooting
“Not connected to an environment”
Connect in XrmToolBox first. Deployment requires an active service connection.
Nothing happens when files change
- Ensure the row has Watch = true
- Check that Root folder is correct and file really exists under it
- Some build processes trigger multiple change events; try increasing Debounce
- Verify permissions to update web resources / publish / plugin assembly / plugin package
Web resources show “Not found in Dataverse”
Use Validate while connected:
- It will check existence in Dataverse and highlight missing ones
- If Prefix is wrong, fix Prefix then click Scan or Validate again
Plugin Package menu missing
Plugin Package deploy is Online only. It will be hidden for on-prem connections.
Roadmap / Ideas
- Bulk enable/disable watch flags
- Better summary view in MainControl (active watchers / config overview)
Contributing
PRs and issues are welcome.
If you contribute:
- Keep changes backward compatible where possible
- Prefer small PRs focused on a single improvement
- Include short notes in the PR description on how to test
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET Framework | net48 is compatible. net481 was computed. |
-
- XrmToolBox (>= 1.2025.7.71)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2026.1.5 | 122 | 1/12/2026 |
| 1.2026.1.3 | 74 | 1/9/2026 |
- Added Web Resources auto-deploy: watch local files and upload/update Dataverse Web Resources on change.
- New "Web Resources Manager" to configure root folder, prefix, scan patterns, and per-file mappings (enable/disable watch).
- Plugin Assembly auto-deploy improvements: support for multiple assemblies, custom paths, and file patterns.
- Plugin Package auto-deploy: watch .nupkg files created by Visual Studio and upload/update contained assemblies on change.
- Debounce support to avoid multiple uploads during rapid saves.
- Optional publish after update (configurable).
- Configuration is persisted per environment/connection.
- UI improvements: Add menu now supports both Plugin Assembly and Web Resources; watcher list supports both types; Remove selected works for both.