TALXIS.DevKit.Build.Dataverse.Solution
1.1.0
Prefix Reserved
dotnet add package TALXIS.DevKit.Build.Dataverse.Solution --version 1.1.0
NuGet\Install-Package TALXIS.DevKit.Build.Dataverse.Solution -Version 1.1.0
<PackageReference Include="TALXIS.DevKit.Build.Dataverse.Solution" Version="1.1.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="TALXIS.DevKit.Build.Dataverse.Solution" Version="1.1.0" />
<PackageReference Include="TALXIS.DevKit.Build.Dataverse.Solution"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add TALXIS.DevKit.Build.Dataverse.Solution --version 1.1.0
#r "nuget: TALXIS.DevKit.Build.Dataverse.Solution, 1.1.0"
#:package TALXIS.DevKit.Build.Dataverse.Solution@1.1.0
#addin nuget:?package=TALXIS.DevKit.Build.Dataverse.Solution&version=1.1.0
#tool nuget:?package=TALXIS.DevKit.Build.Dataverse.Solution&version=1.1.0
TALXIS.DevKit.Build.Dataverse.Solution
MSBuild integration for building complete Dataverse solutions. Orchestrates the entire solution build pipeline: discovers and builds referenced Plugin, WorkflowActivity, ScriptLibrary, CodeApp, and PCF projects; patches solution XML with version, publisher, and managed state; supports manual invocation of schema validation targets for solution metadata against XSD/JSON schemas; runs the PAC solution packager to produce a .zip file; and supports dotnet pack to generate a NuGet package containing the solution zip.
Installation
<PackageReference Include="TALXIS.DevKit.Build.Dataverse.Solution" Version="0.0.0.1" PrivateAssets="All" />
Or use the SDK approach:
<Project Sdk="TALXIS.DevKit.Build.Sdk/0.0.0.1">
<PropertyGroup>
<ProjectType>Solution</ProjectType>
</PropertyGroup>
</Project>
How It Works
The package sets ProjectType to Solution and imports Microsoft.PowerApps.MSBuild.Solution targets. The build pipeline executes in the following order:
1. Component discovery
ProbePluginLibraries, ProbeScriptLibraries, ProbeCodeApps, and ProbeWorkflowActivityLibraries call GetProjectType on all ProjectReference items to classify them by component type. ScriptLibrary and CodeApp references are removed from @(ProjectReference) after discovery so the standard .NET ResolveProjectReferences pipeline does not build them a second time -- they are built explicitly in the next step.
2. Component builds
BuildPluginLibraries, BuildScriptLibraries, BuildCodeApps, and BuildWorkflowActivityLibraries compile each referenced component project before CopyCdsSolutionContent.
3. Component metadata generation
- Plugin assemblies --
EnsurePluginAssemblyDataXmlgenerates.data.xmlfiles underPluginAssemblies/. - Workflow activities --
EnsureWorkflowActivityAssemblyDataXmlgenerates.data.xmlfor workflow activity assemblies. - Script libraries --
CopyScriptLibrariesToWebResourcesresolves web resource names with the publisher prefix, generates.data.xml, and registers root components inSolution.xml. - Code apps --
PrepareCodeAppsSourcesgenerates.meta.xmlviaGenerateCodeAppMetaXml, adds root components (Type 300) toSolution.xml, and ensures theCanvasAppsnode exists inCustomizations.xml.
4. Solution XML patching
PatchSolutionXml writes Version (use ApplyVersionNumber instead, see below), Managed, PublisherName, and PublisherPrefix into Solution.xml (all optional).
5. PAC override and versioning
ProcessCdsProjectReferencesOutputs replaces the Microsoft default to filter ScriptLibrary, CodeApp, and WorkflowActivity references from PAC processing. Then GenerateVersionNumber and ApplyVersionNumber patch the version across all solution metadata.
6. Schema validation (manual)
ValidateSolutionComponentSchema validates all solution XML files against 22 bundled XSD schemas and JSON flows against a JSON schema. Validation runs in batch mode -- all errors are collected before failing the build, with MSBuild-canonical error format for IDE click-through.
This validation is not wired into the build pipeline automatically -- it must be invoked manually, e.g. dotnet build -t:ValidateSolutionComponentSchema.
7. Solution packaging
PowerAppsPackage invokes the PAC solution packager to produce the output .zip.
8. NuGet packing
dotnet pack produces a .nupkg with the solution .zip under content/solution/.
MSBuild Properties
General
| Property | Default | Description |
|---|---|---|
ProjectType |
Solution |
Marks the project as a solution for reference discovery. |
Version |
(required) | Base version; used for Git versioning and applied to solution.xml and related metadata. |
ApplyToBranches |
(none) | Semicolon-separated branch rules (e.g. master;hotfix;develop:1;pr:3;feature/*:2). |
LocalBranchBuildVersionNumber |
0.0.0.1 |
Fallback version when Git versioning is not applied. |
Solution metadata
| Property | Default | Description |
|---|---|---|
Managed |
(none) | Value written to the <Managed> element in solution.xml. |
PublisherName |
(none) | Value written to the publisher name fields in solution.xml. |
PublisherPrefix |
(none) | Value written to solution.xml and used as the web resource name prefix. |
Paths
| Property | Default | Description |
|---|---|---|
SolutionRootPath |
. |
Relative path to the solution source root. |
SolutionPackagerWorkingDirectory |
$(IntermediateOutputPath) |
Working folder for solution packager operations. |
SolutionPackagerMetadataWorkingDirectory |
$(SolutionPackagerWorkingDirectory)Metadata |
Metadata folder used for version updates. |
SolutionPackagerLocalizationWorkingDirectory |
(none) | Optional localization working folder (cleaned by CleanupWorkingDirectory). |
SolutionPackageLogFilePath |
$(IntermediateOutputPath)SolutionPackager.log |
SolutionPackager log path. |
SolutionPackageZipFilePath |
$(OutputPath)$(MSBuildProjectName).zip |
Output zip path for pack tasks. |
Web resources and PCF
| Property | Default | Description |
|---|---|---|
WebResourcesDir |
$(MSBuildProjectDirectory)\$(SolutionRootPath)\WebResources\ |
Destination folder for script library web resources. |
PcfForceUpdate |
(none) | Forwarded to PAC ProcessCdsProjectReferencesOutputs to force PCF updates. |
Validation
Schema validation via ValidateSolutionComponentSchema is not wired automatically -- invoke it manually (e.g. dotnet build -t:ValidateSolutionComponentSchema). No skip property is needed.
Related Packages
- Depends on:
TALXIS.DevKit.Build.Dataverse.Tasks,Microsoft.PowerApps.MSBuild.Solution - Discovers and builds:
Plugin,WorkflowActivity,ScriptLibrary,CodeApp, andPcfprojects viaProjectReference
Learn more about Target Frameworks and .NET Standard.
-
- Microsoft.PowerApps.MSBuild.Solution (>= 1.48.2)
- TALXIS.DevKit.Build.Dataverse.Tasks (>= 1.1.0)
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.1.0 | 24 | 5/1/2026 |
| 1.0.0 | 34 | 4/29/2026 |
| 0.0.0.16 | 84 | 4/28/2026 |
| 0.0.0.15 | 97 | 4/26/2026 |
| 0.0.0.14 | 86 | 4/25/2026 |
| 0.0.0.13 | 288 | 3/13/2026 |
| 0.0.0.12 | 122 | 3/11/2026 |
| 0.0.0.11 | 152 | 3/6/2026 |
| 0.0.0.10 | 227 | 2/24/2026 |
| 0.0.0.9 | 231 | 2/12/2026 |
| 0.0.0.8 | 150 | 2/11/2026 |
| 0.0.0.7 | 152 | 2/11/2026 |
| 0.0.0.6 | 165 | 2/10/2026 |
| 0.0.0.5 | 148 | 2/10/2026 |
| 0.0.0.4 | 151 | 2/10/2026 |