Nimbus 6 Release Notes
This topic presents a summary of Nimbus 6 requirements, key features, and updates, as well as some known issues to be addressed in a future update.
Nimbus 6 Releases
Section titled “Nimbus 6 Releases”Earlier Releases
Section titled “Earlier Releases”Nimbus Prerequisites
Section titled “Nimbus Prerequisites”-
Windows 7 or newer (32-bit or 64-bit)
-
Microsoft .NET Framework 3.5
-
Visual Studio 2017, 2019, or 2022
Any of Community, Professional, or Enterprise editions are supported.
For Visual Studio 2017, version 15.9 or later is required.
For Visual Studio 2019, version 16.10 or later is required.
For Visual Studio 2022, any currently released version is supported.
Known Issues
Section titled “Known Issues”-
Before converting a driver from an earlier Nimbus version, the
.vsfolder or the.suofile should be deleted. This is due to.suofile corruption issues with Visual Studio.Pacific MindWorks is working with the Visual Studio team to find a resolution to this issue.
-
When creating a new driver project, the option to Create a directory for solution must always be chosen. Attempting to manage a Nimbus driver solution with the
.slnfile inside the driver project folder (or any other Nimbus project folder) could lead to unpredictable results.In Visual Studio 2019 and greater, the option is expressed as Place solution and project in the same directory. This option should not be checked.
-
When a driver solution is opened, there are a variety of asynchronous operations that Visual Studio performs. One important operation is NuGet restore, which populates the project with all of the critical binaries and targets it needs to operate. If Driver Designer operations are attempted before the NuGet restore completes, then strange errors such as
Undefined type Int32could result.In practice, this is rarely an issue, as the NuGet restore typically completes within the first few seconds of opening a solution. You can see the status of the NuGet restore in the Output Window.
-
IVI-COM and IVI-C help and setup projects show “broken reference” annotations (yellow warning triangles) on the icon for their project references to the driver project. These references are required for these projects to operate, and the references are indeed intact, but MSBuild currently has a bug that manifests when any custom SDK-style project references a native (C++) project. The same driver project references appear normal in IVI.NET help and setup projects.
These warning annotations are benign and can safely be ignored. Pacific MindWorks is working with Microsoft on mitigations for this MSBuild issue.
-
Merging of IVI.NET repeated capabilities is not currently supported in this release. All other aspects of IVI.NET repeated capabilities are fully implemented in this release.
Nimbus 6.0.6
Section titled “Nimbus 6.0.6”Issues fixed in Nimbus 6.0.6
Section titled “Issues fixed in Nimbus 6.0.6”- Implement multiple techniques for improving the performance of designer operations.
Nimbus 6.0.5
Section titled “Nimbus 6.0.5”Issues fixed in Nimbus 6.0.5
Section titled “Issues fixed in Nimbus 6.0.5”- Fix a crash that could occur when roundtripping C# unit tests for repeated capability properties when ranges were used to specify repeated capability instance names.
- Remove usage of the std::binary_function from NRT since it is deprecated in newer versions of C++.
- Update the NRT DriverSession::Initialize method so that it is not templatized and can thus be made virtual.
Nimbus 6.0.4
Section titled “Nimbus 6.0.4”Issues fixed in Nimbus 6.0.4
Section titled “Issues fixed in Nimbus 6.0.4”- Fix a crash that could occur in the Driver Designer item editors for IVI-COM drivers.
- Ensure Driver Designer item editor text boxes are properly enabled/disabled and made read-only based on selection and other driver state.
- Display the correct version number in the Visual Studio About Dialog.
Nimbus 6.0.3
Section titled “Nimbus 6.0.3”Issues fixed in Nimbus 6.0.3
Section titled “Issues fixed in Nimbus 6.0.3”- Ensure the user name text box is enabled in the user login dialog.
Nimbus 6.0.2
Section titled “Nimbus 6.0.2”Issues fixed in Nimbus 6.0.2
Section titled “Issues fixed in Nimbus 6.0.2”- Fix a deadlock when editing IVI-COM drivers with IVI-C wrappers in Visual Studio 17.2 or higher.
- Update textbox styling to accommodate changes in Visual Studio 17.2 which would sometimes make the text unreadable in disabled text boxes.
Nimbus 6.0.1
Section titled “Nimbus 6.0.1”Issues fixed in Nimbus 6.0.1
Section titled “Issues fixed in Nimbus 6.0.1”- Fix a bug in the 4.2.5707 converter where the AssemblyInfo.cs attributes would not always get migrated to MSBuild project properties in VS2022.
- Fix code navigation in C++ where some drivers might not navigate precisely in the embedded editors or the navigation commands.
- Update prerequisites to include web extensions needed for hosting the HTML editor.
- Fix some file locations in the IVI.NET and IVI-C help file templates.
- Fix a WiX condition injected by the 5.2.0 setup project converter that produced build errors in converted setup projects.
- Fix a bug whereby the repcap collection interface base interfaces were not always being handled properly resulting in some repcap add/remove operations failing.
Nimbus 6.0.0
Section titled “Nimbus 6.0.0”What’s new in Nimbus 6.0.0
Section titled “What’s new in Nimbus 6.0.0”-
Nimbus 6 brings support for 64-bit Visual Studio 2022.
-
IVI.NET drivers are built on the new IVI.NET Configuration Server, instead of the IVI-COM Configuration Server. This has several advantages:
- The IVI.NET driver avoids having to use native code via COM interop.
- Initialization of the IVI.NET driver is much faster, as the well-known performance issues with loading the Config Store via COM are avoided entirely.
- The IVI-COM Configuration Server has a memory leak when used in certain scenarios and this is avoided entirely by use of the IVI.NET Configuration Server.
Issues fixed in Nimbus 6.0.0
Section titled “Issues fixed in Nimbus 6.0.0”-
Don’t include the Windows SDK as a prerequisite. This requires specifying a particular version of the SDK, which would force users to potentially have multiple SDK versions on their machines.
-
Update the C++ project templates to use the latest version of the Windows SDK when building.
-
Fix a bug where conversions warnings would not be displayed.
-
Sort IVI.NET type member tree nodes by label in the Driver Designer, just as IVI-COM and IVI-C.
-
Fix a bug where moving IVI.NET repcaps would inappropriately rename the repcap and repcap collection interfaces.
In some scenarios where the repcap or repcap collection interfaces were children of interfaces being moved, the IVI.NET editor would rename the repcap and repcap collection interfaces (and their children) such that the new names included parent interface names. Repcap interface names and repcap collection interface names should NOT include parent interface names, irrespective of where they are in the hierarchy.
-
Don’t rename IVI.NET repcap collection interfaces when a parent reference property is renamed.
The repcap interface and repcap collection interface names should be kept in sync with the repcap name. The repcap and repcap collection interfaces are only renamed when the repcap itself is renamed. This is also consistent with how IVI-COM already works.
-
Fix a bug in the IVI-COM 2.1.10 converter where help custom fields would not get migrated properly and an invalid XML element would be created.
-
Fix a bug in the Driver Designer where output array parameters in the IVI.NET method would not produce array parameters at all in the IVI-C function.
-
Fix a bug in IVI.NET drivers with quoted values in simulation data.
-
Fix an issue in the IVI-COM driver converter where we needed to adjust the name of parent repcaps in instrument commands.
-
Fix a bug whereby properties were getting set in a platform/configuration-dependent manner when they should be set independent of configuration.
-
Allow editing of simulation, range-check, and state-caching data for class-compliant properties.
-
Fix a bug in the IVI-C
Enums.hgenerator where excluded IVI-C enum members were still getting generated in the file. -
Fix a bug where IVI-C enum member commands were not editable.
-
Allow renaming of IVI-C functions when only the casing changes.
-
Fix a bad return type for the IVI-C
PULSE_MODULATION_EXTERNAL_POLARITYattribute. -
Fix a bad return type for the IVI-C
PULSE_MODULATION_SOURCEattribute. -
Don’t create unit tests for IVI-C attribute getters and setters. This makes the size of the unit test HUGE and adds no real value.
-
Fix a small bug in the IVI.NET options page where the option for creating an IVI-C C++ console app was wired to the option to create an IVI-C wrapper.
-
Fix a bug in the IVI.NET project wizard where the wizard attempted to use the IVI-C driver project to determine the target framework version when creating the IVI-C unit test project.
-
Fix a warning in
NRT.hregarding integer size. -
Update the project template files for setup to use the English language ID (1033) in the
FileSearchelement that checks for the IVI and IVI.NET and VISA.NET installations.If the language in the search doesn’t match, then the search won’t match. Previously, this was “working” because the file version for the
IviSharedComponent.dll(and others) always had a non-zero value for the 4th digit of the version number. OurMininumIviSharedComponentVersionwould only include 3 digits. So, that min version was always strictly less than the actual file version. In such a case, MSI has a strange (though spec’d) behavior where specifying a value of “0” for the language in the FileSearch would match any language if the comparison was strictly less than. It would not match if the comparison was equal, unless the language also matched. With the release of IVI Shared Components 3, the 4th digit of the file version number is zero, so our comparison of our 3-digit minimum version needs to work in the case of an exact version match. That only works if the language also matches. -
Update the IVI.NET driver
Setup.wxsso that the driver does not appear twice in the Add References Dialog on 64-bit machines. -
Fix “Unlink IVI-C Driver” operation in the IVI.NET driver editor.
-
Don’t add an interface prefix to IVi.NET member labels on interfaces in the Driver Designer.
Only types that implement interfaces should prefix the implemented interface member with the interface name. Interfaces only show their direct members, not members from base interfaces, so there’s never any need to prefix interface member labels.
-
Fix several bugs associated with editing methods and properties on free-standing IVI-COM interfaces.
-
Fix a bug in changing the IVI-C prefix for IVI-C drivers linked to IVI.NET as well as IVI-C wrappers on IVI-COM drivers.