Revit Plug-in / Speckle Implementation

Hello Speckle community,

I am developing a developing a plug-in for Revit, utilizing Speckle Core. Through the plug-in, I’m connecting to the speckle manager to get the accounts / default account, get its streams and get the objects of the selected stream to show in a WPF window. Even though I have built the standalone version of it and it’s working just fine, I encounter the following issue when I’m trying to integrate the solution into Revit:

image

I’ve tried running the GetAccounts method by themselves via Revit and the issue still persists. I have also tried adding additional SQL / SQLite references to the project via NuGet, however I’m not able to resolve the issue. The installed packages are the ones listed below:

Is there any solutions to this issue or any directives?

Thank you in advance.

Hey @GA_LefKour !

You’re not the only one suffering from SQLite issues, we had that pop up a lot, a few things you can try:

  • make sure you’re building for x64
  • add these lines to your csproj:
2 Likes

Thanks Matteo for that. I did try both solutions, disabling the 32-bit build and including these 4 lines in my csproj file. However, the error persists. Here’s how the top part of my csproj looks like at the moment for your reference.

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\EntityFramework.6.4.4\build\EntityFramework.props" Condition="Exists('..\packages\EntityFramework.6.4.4\build\EntityFramework.props')" />
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>{3599D354-E8B3-4806-9978-4AB688E49C10}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>InterCopRevitPlugin</RootNamespace>
    <AssemblyName>InterCopRevitPlugin</AssemblyName>
    <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
    <FileAlignment>512</FileAlignment>
    <Deterministic>true</Deterministic>
    <NuGetPackageImportStamp>
    </NuGetPackageImportStamp>
    <TargetFrameworkProfile />
    <PlatformTarget>x64</PlatformTarget>
    <ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
    <CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
    <CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
    <CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
  </PropertyGroup>

Can you check if it actually gets built? In our connector, it shows up under bin\Debug\x64\: and you might need to update your post build actions to have it copy to the Revit addin folder…

It seems like the only thing that’s being placed in the x64 file is the SQLite.Interop.dll file. I should probably see the whole build in there right? Also, I manually copied the SQLite.Interop.dll to the Revit addins folder (don’t know if that’s a safe approach at all), just to check if it work and I get the following error when I try to launch the plug-in in Revit

image

Ok, so if that dll is generated we’re on the right path!
There should not be anything else in that folder that is required by Core, so I’m a bit puzzled by your error message… Are you debugging? If so do you get any more info? Can you try with another Revit version maybe 2021/2022?
PS
nothing bad in copying it manually

1 Like

Hi Matteo,

I did manage to resolve the issue by copying the whole folder to the addins folder of Revit. I had the default post-build events set, so I suppose that the dependencies where not being copied over and I did miss a few during my manual check.

Thank you for your assistance!

1 Like