NI TestStand

Showing results for 
Search instead for 
Did you mean: 

Calling .NET with IXXAT

Hi All,


I have .NET driver for communication with our product via CAN bus using IXXAT driver.

It works fine if called from other c# classes not called from TestStand.


However, calling it from TestStand does return the following error:


Error: An exception occurred inside the call to .NET member 'GetDevices':
System.InvalidOperationException: GetEntryAssembly did not return a valid assembly reference
   at Ixxat.Vci4.VciServer.LoadServer(String assemblyloadpath)
   at Ixxat.Vci4.VciServer.Instance(String assemblyloadpath)
   at CanLibrary.Communication.GetDevices() in C:\Projects ATE\TestStand Driver\Communication.cs:line 123
   at libCan.Main.GetDevices() in C:\Projects ATE\libMantra\Class1.cs:line 14[Error Code: -2146233079, Code Module/User-defined error code. ]


Getting devices is standard IXXAT code:


IVciDeviceManager deviceManager = VciServer.Instance().DeviceManager;
devices = deviceManager.GetDeviceList();
foreach (IVciDevice device in devices)



Red part causes that error.


Calling others function (not related to IXXAT) work fine.


Hope anynone had such issue in the past.





0 Kudos
Message 1 of 6

Please confirm if your driver is .NET Core or .NET Framework.  TestStand only supports .NET Framework. Refer to: TestStand and .NET Framework Compatibility - NI

Message 2 of 6



It is .NET Framework 4.8 and using latest TestStand version.

0 Kudos
Message 3 of 6

Per Assembly.GetEntryAssembly Method (System.Reflection) | Microsoft Learn

"The GetEntryAssembly method can return null when a managed assembly has been loaded from an unmanaged application. For example, if an unmanaged application creates an instance of a COM component written in C#, a call to the GetEntryAssembly method from the C# component returns null, because the entry point for the process was unmanaged code rather than a managed assembly."


You have two options:


  1. If IXXAT provides a C/C++ driver use that instead and call it from a C/C++ TestStand adapter.
  2. Create a console executable application with arguments and return codes that uses the IXXAT driver.  Call the executable from a Command step from TestStand.
0 Kudos
Message 4 of 6

My answer above was assuming that TestStand was Unmanaged, however it is a Managed application.  You could still try my suggestions to see what happens.

0 Kudos
Message 5 of 6



I figured out how to make it working. Someone had similar issue 8 years ago with Vector device:


Works perfectly implementing that solution.


Also have to mention, that I wanted to use existing C# code as all custom processing / addressing is already there, so don't have to spend time  repeating that again.


Hope it will help others.

0 Kudos
Message 6 of 6