# Plugin target framework

**URL:** <https://forum.opentap.io/t/plugin-target-framework/65>\
**Category:** Technical\
**Tags:** opentap-sdk\
**Created:** [October 21, 2020, 2:51pm UTC](https://forum.opentap.io/t/plugin-target-framework/65 "2020-10-21T14:51:25Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![jason.hicks](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/jason.hicks/32/281_2.png) [@jason.hicks](https://forum.opentap.io/u/jason.hicks)\
**Post date:** [October 21, 2020, 2:51pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/1 "2020-10-21T14:51:25Z")

</div>

What target framework should I look at using if I’m developing a plugin?  
And would a different target framework be more suitable for different uses?

---

<div class="post-metadata">

**Author:** ![brennen\_direnzo](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/brennen_direnzo/32/6_2.png) [@brennen\_direnzo](https://forum.opentap.io/u/brennen_direnzo)\
**Post date:** [October 21, 2020, 3:22pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/2 "2020-10-21T15:22:00Z")

</div>

@jason.hicks I’m assuming you mean .NET Framework vs .NET Standard here correct?

We do have plugin templates for both. In general, I would default to the netstandard template. This is the easiest to use and uses the OpenTAP Nuget package ([https://gitlab.com/OpenTAP/opentap/-/blob/release9x/doc/Developer%20Guide/Getting%20Started%20in%20Visual%20Studio/Readme.md#nuget-package](https://gitlab.com/OpenTAP/opentap/-/blob/release9x/doc/Developer%20Guide/Getting%20Started%20in%20Visual%20Studio/Readme.md#nuget-package)) by default. It also does some nicer things like compiles to a bin directory vs your install directory, so you can keep debug and install separate. Obviously, these will also be able to work cross platform if you wanted.

The .NET Framework template should be used if you will have any WPF or WinForms UI dependencies in your plugin (Dockable Panel, custom components, etc.).

This is really a .NET limitation for now, but once .NET 5 comes out (when Microsoft plans to merge .NET Core and .NET Framework) we may be able to merge to a single template as well.

---

<div class="post-metadata">

**Author:** ![jason.hicks](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/jason.hicks/32/281_2.png) [@jason.hicks](https://forum.opentap.io/u/jason.hicks)\
**Post date:** [October 21, 2020, 4:05pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/3 "2020-10-21T16:05:16Z")

</div>

@brennen_direnzo Cheers man!

---

<div class="post-metadata">

**Author:** ![GoranJohnsson](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/goranjohnsson/32/140_2.png) [@GoranJohnsson](https://forum.opentap.io/u/GoranJohnsson)\
**Post date:** [October 21, 2020, 8:15pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/4 "2020-10-21T20:15:34Z")

</div>

So is there a roadmap/schedule for .NET 5 support?

---

<div class="post-metadata">

**Author:** ![brennen\_direnzo](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/brennen_direnzo/32/6_2.png) [@brennen\_direnzo](https://forum.opentap.io/u/brennen_direnzo)\
**Post date:** [October 21, 2020, 8:25pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/5 "2020-10-21T20:25:22Z")

</div>

Not yet from an OpenTAP perspective. .NET 5 is not yet officially released yet even. It’s planned for Nov this year though. And seems to still be on track. They released an RC 2 last week.

> **[Introducing .NET 5 | .NET Blog](https://devblogs.microsoft.com/dotnet/introducing-net-5/)**
>
> Today, we’re announcing that the next release after .NET Core 3.0 will be .NET 5. This will be the next big release in the .NET family. There will be just one .NET going forward, and you will be able to use it to target Windows,

From there, it will likely be community driven. We haven’t seen a large push for cross platform support, but it has been increasing.

I’m interested to hear if better support there would be valuable to anyone in the community, of it most people are Windows based and plan to stay that way.

---

<div class="post-metadata">

**Author:** ![GoranJohnsson](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/goranjohnsson/32/140_2.png) [@GoranJohnsson](https://forum.opentap.io/u/GoranJohnsson)\
**Post date:** [October 21, 2020, 8:37pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/6 "2020-10-21T20:37:20Z")

</div>

.NET 5 will be introduced at the .NET Conference Nov 10.

As I see it, .NET 5 together with other parts depending on it like WinUI 3, will set a milestone in SW dev.  
I’m very much waiting for it to implement my Operator GUI/Test exec based upon OpenTAP.

So, yes please!

---

<div class="post-metadata">

**Author:** ![david-wsd](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/david-wsd/32/204_2.png) [@david-wsd](https://forum.opentap.io/u/david-wsd)\
**Post date:** [October 22, 2020, 4:02pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/7 "2020-10-22T16:02:16Z")

</div>

@brennen_direnzo I 've been wondering whether I should be migrating my plugins from .NET Framework to .NET Standard, and you just answered my question. We utilize wpf for several custom IControlProvider UI elements. Sounds like I need to stay on .NET Framework.

---

<div class="post-metadata">

**Author:** ![brennen\_direnzo](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/brennen_direnzo/32/6_2.png) [@brennen\_direnzo](https://forum.opentap.io/u/brennen_direnzo)\
**Post date:** [October 22, 2020, 4:11pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/8 "2020-10-22T16:11:03Z")

</div>

Ya, it sounds like it would probably be best to stay on .NET Framework in your case. That said, you may want to consider still moving to the OpenTAP Nuget package. This can be done independently of netstandard vs netframework. It helps with some problems I know you have had like putting your debug code in directory different from your install directly, being able to explicitly which TapPackages to use (and therefore which dependencies will be added), as well as being able to build against a different version of OpenTAP than what you have installed.

> **[Getting Started | OpenTAP](https://doc.opentap.io/Developer%20Guide/Getting%20Started%20in%20Visual%20Studio/#nuget-package)**

---

<div class="post-metadata">

**Author:** ![david-wsd](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/david-wsd/32/204_2.png) [@david-wsd](https://forum.opentap.io/u/david-wsd)\
**Post date:** [October 22, 2020, 4:31pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/9 "2020-10-22T16:31:02Z")

</div>

OK, sounds like migrating will be a good thing to do at some point, though something tells me it will be a hairy operation. Thanks for the link.

---

<div class="post-metadata">

**Author:** ![brennen\_direnzo](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/brennen_direnzo/32/6_2.png) [@brennen\_direnzo](https://forum.opentap.io/u/brennen_direnzo)\
**Post date:** [October 22, 2020, 4:45pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/10 "2020-10-22T16:45:46Z")

</div>

It’s not to bad. You can also reference this plugin here:

> **[Projects · OpenTAP / Plugins / Keysight Technologies / BarcodeScanner](https://gitlab.com/OpenTAP/Plugins/keysight/barcodescanner)**
>
> Provides an input window into the Editor for HID or COM devices

But I have created an issue to help improve this with more detailed documentation:

> **[Document how to migrate .NET Framework plugins to use OpenTAP Nuget Package...](https://gitlab.com/OpenTAP/opentap/-/issues/429)**
>
> Existing and new .NET Framework plugins still use the local reference to OpenTAP.dll. Some users would like to move to use Nuget, even though they need to still...

---

<div class="post-metadata">

**Author:** ![brennen\_direnzo](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/brennen_direnzo/32/6_2.png) [@brennen\_direnzo](https://forum.opentap.io/u/brennen_direnzo)\
**Post date:** [November 13, 2020, 3:53pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/11 "2020-11-13T15:53:02Z")

</div>

> [@GoranJohnsson](#):
>
> .NET 5 will be introduced at the .NET Conference Nov 10.
> 
> As I see it, .NET 5 together with other parts depending on it like WinUI 3, will set a milestone in SW dev.  
> I’m very much waiting for it to implement my Operator GUI/Test exec based upon OpenTAP.
> 
> So, yes please!

@rolf_madsen or @asger_iversen do we have any thinking around when OpenTAP may look to move to .NET 5? It looks like they adjusted their planning some and .NET 5 does not get deliver on the promise of merging .NET Framework and .NET Core, but that is still the end goal.

---

<div class="post-metadata">

**Author:** ![teder.ted](https://avatars.discourse-cdn.com/v4/letter/t/8491ac/32.png) [@teder.ted](https://forum.opentap.io/u/teder.ted)\
**Post date:** [March 3, 2021, 7:44am UTC](https://forum.opentap.io/t/plugin-target-framework/65/12 "2021-03-03T07:44:30Z")

</div>

I’m writing some plugins(without any UI) for OpenTAP. I want to use openTAP just in windows. What type of project should I use for developing plugins?

As proposed in OpenTAP docs, I build a .net standard project. But this .net standard does not support working with serial port.

If OpenTAP completely support plugins which build with .NetFramework, I prefer to use that. Which version of .NETFramework is supported?

How about .Net Core 3.0/3.1 or .Net 5? Does OpenTAP supports plugins built by these frameworks?

---

<div class="post-metadata">

**Author:** ![brennen\_direnzo](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/brennen_direnzo/32/6_2.png) [@brennen\_direnzo](https://forum.opentap.io/u/brennen_direnzo)\
**Post date:** [March 3, 2021, 4:53pm UTC](https://forum.opentap.io/t/plugin-target-framework/65/13 "2021-03-03T16:53:47Z")

</div>

@teder.ted if you intend to only run on Windows, technically, either will work. However, our plan is ultimately to move to .NET 5 (and 6). So, starting there will make it easier to migrate forward. Especially if you won’t have a UI anyway.

Currently we only support .NET Core 2 and .NET Framework 4.6.2, but as .NET 5 stabilizes we plan to migrate to that. Skipping .NET Core 3.

As for Serial Ports, there is a Nuget Package that works .NET standard: [NuGet Gallery | System.IO.Ports 4.4.0-preview2-25405-01](https://www.nuget.org/packages/System.IO.Ports/4.4.0-preview2-25405-01). Personally, I have found the Nuget Packages for Serial control work better than the built in Serial.IO.Ports from .NET Framework. I’ve had issues in the past with not being able to update baud rate correctly.

---

<div class="post-metadata">

**Author:** ![brennen\_direnzo](https://sea2.discourse-cdn.com/flex020/user_avatar/forum.opentap.io/brennen_direnzo/32/6_2.png) [@brennen\_direnzo](https://forum.opentap.io/u/brennen_direnzo)\
**Post date:** [March 8, 2022, 2:55am UTC](https://forum.opentap.io/t/plugin-target-framework/65/14 "2022-03-08T02:55:04Z")

</div>

As of 9.17 we have officially migrated to .NET 6:

> **[OpenTAP 9.17 Now Available](https://news.opentap.io/opentap-9-17-now-available)**
