SkillAgentSearch skills...

Autodesk.PackageBuilder

This package is intended to build Autodesk PackageContent.xml using C# fluent API.

Install / Use

/learn @ricaun-io/Autodesk.PackageBuilder
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Autodesk.PackageBuilder

Autodesk AutoCAD Revit 3ds Max Inventor Maya Navisworks

<!-- [![Vault](https://img.shields.io/badge/Vault-DBAE03.svg)](https://github.com/ricaun-io/Autodesk.PackageBuilder) [![Fusion 360](https://img.shields.io/badge/Fusion%20360-FF6B00.svg)](https://github.com/ricaun-io/Autodesk.PackageBuilder) -->

Visual Studio 2022 Nuke License MIT Build Release

This package is intended to build Autodesk PackageContent.xml and RevitAddin.addin/InventorAddin.addin using C# fluent API.

Autodesk Product Version Table

| Product | RuntimeRequirements::SeriesMin/SeriesMax | RuntimeRequirements::Platform | |--------------|------------------------------------------|--------------------------------------| | AutoCAD | R24.0 (2021), R23.1 (2020), R23.0 (2019) | AutoCAD* | | Revit | R2021, R2020, R2019, R2018, R2017 | Revit | | Maya | 2021, 2020, 2019, 2018, ... | Maya | | 3ds Max | 2021, 2020, 2019, 2018, ... | 3ds Max|3ds Max Design | | Inventor | (version is taken from add-in manifest) | Inventor | | Navisworks | Nw18 (2021), Nw17 (2020), Nw16 (2019) | NAVMAN|NAVSIM | | Vault | V2021, V2020, V2019, ... | Vault | | Fusion 360 | (No version, leave empty) | Fusion 360 |

Examples

Create PackageContents.xml

To get the PackageContents.xml like this:

<?xml version="1.0" encoding="utf-8"?>
<ApplicationPackage SchemaVersion="1.0" ProductType="Application" AutodeskProduct="Revit" Name="RevitAddin" AppVersion="1.0.0">
  <CompanyDetails Name="Company Name" Email="email" Url="url" />
  <Components Description="Revit 2021">
    <RuntimeRequirements OS="Win64" Platform="Revit" SeriesMin="R2021" SeriesMax="R2021" />
    <ComponentEntry AppName="RevitAddin" ModuleName="./Contents/2021/RevitAddin.addin" />
  </Components>
  <Components Description="Revit 2022">
    <RuntimeRequirements OS="Win64" Platform="Revit" SeriesMin="R2022" SeriesMax="R2022" />
    <ComponentEntry AppName="RevitAddin" ModuleName="./Contents/2022/RevitAddin.addin" />
  </Components>
</ApplicationPackage>

Inherit your builder class from PackageContentsBuilder base class.

public class DemoPackageBuilder : PackageContentsBuilder
{
    public DemoPackageBuilder()
    {
        ApplicationPackage
            .Create()
            .ProductType(ProductTypes.Application)
            .AutodeskProduct(AutodeskProducts.Revit)
            .Name("RevitAddin")
            .AppVersion("1.0.0");

        CompanyDetails
            .Create("Company Name")
            .Email("email")
            .Url("url");

        Components
            .CreateEntry("Revit 2021")
            .OS("Win64")
            .Platform("Revit")
            .SeriesMin("R2021")
            .SeriesMax("R2021")
            .AppName("RevitAddin")
            .ModuleName(@"./Contents/2021/RevitAddin.addin");

        Components
            .CreateEntry("Revit 2022")
            .RevitPlatform(2022)
            .AppName("RevitAddin")
            .ModuleName(@"./Contents/2022/RevitAddin.addin");
    }
}

Or use BuilderUtils.Build<PackageContentsBuilder>().

var builder = BuilderUtils.Build<PackageContentsBuilder>(builder =>
{
    builder.ApplicationPackage
        .Create()
        .ProductType(ProductTypes.Application)
        .AutodeskProduct(AutodeskProducts.Revit)
        .Name("RevitAddin")
        .AppVersion("1.0.0");

    builder.CompanyDetails
        .Create("Company Name")
        .Email("email")
        .Url("url");

    builder.Components
        .CreateEntry("Revit 2021")
        .OS("Win64")
        .Platform("Revit")
        .SeriesMin("R2021")
        .SeriesMax("R2021")
        .AppName("RevitAddin")
        .ModuleName(@"./Contents/2021/RevitAddin.addin");

    builder.Components
        .CreateEntry("Revit 2022")
        .RevitPlatform(2022)
        .AppName("RevitAddin")
        .ModuleName(@"./Contents/2022/RevitAddin.addin");
});

Getting results

String result

var builder = new DemoPackageBuilder();
var result = builder.ToString();

.xml file

var builder = new DemoPackageBuilder();
builder.Build("PackageContents.xml");

// or

BuilderUtils.Build<DemoPackageBuilder>("PackageContents.xml");

// or

BuilderUtils.Build<DemoPackageBuilder>("PackageContents.xml", builder => {...});

// or

BuilderUtils.Build<DemoPackageBuilder>(builder => {...}, "PackageContents.xml");

// or

BuilderUtils.Build<DemoPackageBuilder>(builder => {...}).Build("PackageContents.xml");

Create RevitAddin.addin

To get the RevitAddin.addin like this:

<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
  <AddIn Type="Application">
    <Name>RevitAddin</Name>
    <AddInId>11111111-2222-3333-4444-555555555555</AddInId>
    <Assembly>RevitAddin.dll</Assembly>
    <FullClassName>RevitAddin.App</FullClassName>
    <VendorId>RevitAddin</VendorId>
    <VendorDescription>RevitAddin</VendorDescription>
  </AddIn>
</RevitAddIns>

Inherit your builder class from RevitAddInsBuilder base class.

public class DemoAddinBuilder : RevitAddInsBuilder
{
    public DemoAddinBuilder()
    {
        AddIn.CreateEntry("Application")
            .Name("RevitAddin")
            .AddInId("11111111-2222-3333-4444-555555555555")
            .Assembly("RevitAddin.dll")
            .FullClassName("RevitAddin.App")
            .VendorId("RevitAddin")
            .VendorDescription("RevitAddin");
    }
}

Or use BuilderUtils.Build<RevitAddInsBuilder>().

var builder = BuilderUtils.Build<RevitAddInsBuilder>(builder =>
{
    builder.AddIn.CreateEntry("Application")
        .Name("RevitAddin")
        .AddInId("11111111-2222-3333-4444-555555555555")
        .Assembly("RevitAddin.dll")
        .FullClassName("RevitAddin.App")
        .VendorId("RevitAddin")
        .VendorDescription("RevitAddin");
});

Getting results

String result

var builder = new DemoAddinBuilder();
var result = builder.ToString();

.addin file

var builder = new DemoAddinBuilder();
builder.Build("RevitAddin.addin");

// or

BuilderUtils.Build<DemoAddinBuilder>("RevitAddin.addin");

// or

BuilderUtils.Build<DemoAddinBuilder>("RevitAddin.addin", builder => {...});

// or

BuilderUtils.Build<DemoAddinBuilder>(builder => {...}, "RevitAddin.addin");

// or

BuilderUtils.Build<DemoAddinBuilder>(builder => {...}).Build("RevitAddin.addin");

Not implemented Attribute and Element

If the Attribute or Element is not implemented, you can use DataBuilder to access the methods CreateAttribute and CreateElement.

var builder = BuilderUtils.Build<PackageContentsBuilder>(builder =>
{
    builder.Components
        .CreateEntry("Revit 2021")
        .DataBuilder.CreateAttribute("Attribute", "Value");

    builder.Components
        .CreateEntry("Revit 2022")
        .DataBuilder.CreateElement("Element", "Value");

    builder.Components
        .CreateEntry("Revit 2023")
        .DataBuilder.CreateAttribute<ComponentEntry>("Attribute", "Value");

    builder.Components
        .CreateEntry("Revit 2024")
        .DataBuilder.CreateElement<ComponentEntry>("Element", "Value");
});

Create custom Element/Attribute

The class ExtensibleData could be used to create custom Element.

public class CustomElement : ExtensibleData
{
    [XmlAttribute]
    public string Name { get; set; }
    [XmlElement]
    public string Value { get; set; }
}

The ExtensibleData uses a XmlSerializer to serialize the object. Use the DataBuilder to access the methods CreateElement and CreateAttribute to create custom elements or attributes.

var builder = BuilderUtils.Build<PackageContentsBuilder>(builder =>
{
    var custom = new CustomElement()
    {
        Name = "Name",
        Value = "Value"
    };

    var componentRevit2021 = builder.Components
        .CreateEntry("Revit 2021");

    componentRevit2021.DataBuilder.CreateAttribute("Attribute", true);
    componentRevit2021.DataBuilder.CreateElement("Element", true);
    componentRevit2021.DataBuilder.CreateElement("CustomElement", custom);
});

This is the result of the above code:

<?xml version="1.0" encoding="u
View on GitHub
GitHub Stars14
CategoryContent
Updated2mo ago
Forks4

Languages

C#

Security Score

95/100

Audited on Jan 29, 2026

No findings