Autodesk Forge is now Autodesk Platform Services

14 Apr 2021

Run correct app bundle

Before relying on the Interaction project provided by the Visual Studio solution template for Design Automation for Inventor, I used to update my app bundles and activities in other ways - like using Postman

Even with the Interaction project, you can run into problems: e.g. you forget to compile your project and so the zip file that gets uploaded as the new app bundle version is not up-to-date.

There could be other problems too: perhaps you did not set the correct alias for the latest version or the activity is not referencing the correct alias

So, I started logging a version number to the console from the app bundle that I kept changing, and that way I could see if the latest version was running on the Design Automation server or not

Trace.TraceInformation("App Bundle v9");

But sometimes I forget to change it and upload a new app bundle, which in the case of one full of resource files can take a while.

Since the version number of the assembly (defined in AssemblyInfo.cs) already gets printed to the console (see below), perhaps I could just keep changing that.

App bundle version logged to console

The best thing would be to automate this - and you can. ?
If you use an asterisk in the version number (e.g. [assembly: AssemblyVersion("1.0.*")]), then that part will be changed after each build automatically. As discussed here, from the generated version number you can even figure out the build time.    

Using this code I can now always see the build time of the app bundle that's running on the Design Automation server.

public void LogAssemblyVersion()
{
    Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
    DateTime buildDate = new DateTime(2000, 1, 1)
                            .AddDays(version.Build)
                            .AddSeconds(version.Revision * 2);
    string displayableVersion = $"AppBundle {version} ({buildDate})";

    Trace.TraceInformation(displayableVersion);
}

public void RunWithArguments(Document doc, NameValueMap map)
{
    LogAssemblyVersion();

    // etc

App bundle version and build time logged to console

Related Article