You Asked
Why do newer versions have dependencies on:
System.Diagnostics.PerformanceCounter
System.DirectoryServices
System.DirectoryServices.Protocols (has no deps on net6.0 thankfully)
These packages bring in all kinds of transitive dependencies, including Windows specific ones that are just a waste when compiling for a linux runtime target.
and we said...
If you are not using functionality related to these packages, you can remove these dependencies. For example, if you don't use LDAP, you can drop the DirectoryServices dependency. When Oracle publishes these packages, we can't predict what functionality your app will use. And it would be a poor experience when you started using LDAP, you hit an error until you add the necessary packages manually. Thus, we have erred on the side of including all the dependencies that could be necessary for the *NuGet* package.
If you wish to prune these dependencies, you can download the ODP.NET NuGet package, unzip it, extract Oracle.ManagedDataAccess.dll, and add it manually to your project references. You will no longer have these dependencies, which you see is a feature of how NuGet packaging works.
At this point, NuGet doesn't have "optional" dependencies that can be pruned at production time if they are unused.
Is this answer out of date? If it is, please let us know via a Comment