Skip to content

imranakram/XrmToolBox.AutoDeployer

Repository files navigation

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 .dll files
  • 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 CrmName as: {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 .nupkg to 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

  1. Click AddPlugin Assembly
  2. Select a plugin .dll
  3. The tool starts watching the file
  4. Rebuild your project → when the .dll changes, Auto Deployer updates the plugin assembly
  5. 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

  1. Click AddWeb Resources

  2. 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)
  3. Click Scan

    • Adds matching local files to the grid (without duplicates)
    • Updates CrmName for existing rows based on the current Prefix
    • Auto-generates CrmName as: {prefix}/{relativePath}
  4. Set Watch = true for the rows you want actively monitored

  5. Click Validate

    • Checks local settings (duplicates, missing files)
    • If connected, checks whether the CrmName exists in Dataverse
    • Highlights cells:
      • Red = local error (duplicates / missing file) or not found in Dataverse
      • Green = OK
  6. 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.js

  • CrmName is the Dataverse Web Resource name derived from Prefix
    Example: cint_/scripts/my_script.js

On file change, the tool:

  1. Uploads the new content to that Web Resource
  2. Optionally publishes (if enabled)
  3. 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)

  1. Click AddPlugin Package (only shown for Dataverse online)
  2. Select a .nupkg file on disk
  3. Select the target Plugin Package from the environment
  4. The tool starts watching the file
  5. Rebuild/pack → when the .nupkg changes, Auto Deployer uploads the new package content
  6. 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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 5

Languages