Documentation on NET system libraries' support?

Is there a way to find what parts of the .NET system/class libraries are supported or not for any of Unity’s .NET compatibility profiles or platforms? The documentation is vague on this, leaving it at Unity matching .NET Standard 2.0 and .NET 4.X series with varying platform support. However, on this thread for example, it is mentioned that System.Net.Http.HttpClient.DefaultProxyCredentials is not implemented: Exception thrown when setting up HttpClientHandler .

Even if that piece has changed since its thread was updated, I am not concerned with any one API element with this post. I ask here more concerned with the inconvenience of having to test every desired function call or property access on every target platform.

It’s kind of a moving target really. With every release there might be subtle differences on various targets. Some changes are documented, some are not.

I don’t think documentation ever gets you out of having to test your code… at least I hope it doesn’t, otherwise I’ve been wasting a lot of time testing my code! :slight_smile:

1 Like

This is missing the point, maybe that is my fault in failure to correctly express my problem. I do not believe I can effectively operate on a dependency where it is unknown which of its functions or types are implemented or just stubs.

Maybe a better parallel or example would be If half of the C++ standard API was unsupported by a compiler without it mentioning that fact. In reality, they usually do mention what part of the API they meet and differ from, but imagine for this case that they did not. Would that not be frustrating? I don’t think it’s crazy to believe a sane person’s response would simply be to move to another compiler that doesn’t do something weird like that. Now I don’t have that option within the Unity platform, other than changing game engines which I would prefer not to do.

Well… as was stated some of it is documented. But not all of it as it’s a moving target (it could also be argued by some that Unity isn’t exactly the greatest at documenting stuff… myself included in this criticism).

If this is not acceptable for your needs. Well… then maybe Unity isn’t an option for you.

I don’t know what else to say in that regard. The likes of Kurt-Dekker, Myself, and many others have worked around that aspect for a decade now (jeeeeezzz, so old). But that’s part of the whole researching 3rd party tools like Unity… you determine if the tool is fit for you based on your own pros/cons list. Unity has many cons in my pro/con list, but none of them are deal breaks for me personally (though may be for you).

3 Likes

Yes, the world is imperfect.

Yes this stuff comes up.

Does it prevent me from operating effectively?

No, not really.

As Clint Eastwood said, “You improvise, you adapt, you overcome!”

Good luck!

EDIT: <Removed potentially insensitive and inflammatory comment… apologies, no harm intended…>

1 Like

I feel like I am missing something here, because I started by asking for help on where to find the sort of documentations you both are referencing, but instead only receive criticisms of myself as a developer? Maybe lets go with concrete things instead then, like the post I referenced. Can you point me to this documentation? All I can find are these, which do not detail:

https://docs.unity3d.com/Manual/dotnetProfileSupport.html
https://docs.unity3d.com/Manual/dotnetProfileAssemblies.html

Can you show me an example? That might help me to know where to continue looking.

We’re not criticizing you.

And yes, that’s the documentation. Unity docs is the documentation. We had assumed you were well aware of it from your posts, but that you didn’t find it adequate.

This combined with your examples of like:

Led me to interpret you as understanding the documentation is not complete and that you are not satisfied with it.

We are approaching this from the perspective of “you are not wrong… the documentation is not detailed”. Unless you would like me to link the very documentation you already have.

I mean I guess there’s also the release notes… but ugh. Have you tried reading those? Honestly, I generally avoid them, lol.

Example of what the release notes look like:

They’re great if you’re looking for a specific bug fix or something. But general support/documentation like what you’re looking for is… miserable to gleen from these since it’s organized by release.

Maybe let me start again with my initial question then: Is there a way to find what parts of the .NET system/class libraries are supported or not for any of Unity’s .NET compatibility profiles or platforms?

So would my understanding be correct in that both of your answers can be summarized to “no” for my initial question? I was approaching your responses from the perspective that you both are able to find solutions that I so far have not been able to. If that’s not true, I’m not sure I see the value in a “it’s just the way it is” conversation. Hopefully someone might have insight, such as a Unity developer perspective, or someone who has dealt with the problem before and can guide, or someone who knows where a documentation page or github repo is with more information that I have simply missed.

Edit: rephrasing last sentence

If your initial question is:
Is there a way to find what parts of the .NET system/class libraries are supported or not for any of Unity’s .NET

The answer isn’t no… it’s… sort of.

As you already linked yourself there’s this:

Which states that if you’re on 4.x you get:

Those libs are included. That’s what you get support for from Unity. Some aspects of it may or may not work as you dug up from that post where a Unity person mentioned the HttpClient.DefaultProxyCredentials. Any other parts of it that don’t work? :shrug:, I know of no documentation explicitly stating it outside of random posts like the one you dug up.

Outside of those you can manually include your own .net dll’s, even those from Microsoft. In which case the limitations are documented by Microsoft themselves (such as if you included System.WinForms.dll which requires to be ran on Windows since it hooks heavily into the windows OS. And even then Microsoft doesn’t just list this somewhere… it’s just assumed you’d know WinForms isn’t in MacOS.). Unity does not, and likely will never, directly document the support of such libraries if only because they don’t include them in Unity in the first place. Basically an “at your own risk” situation.

I guess you could take it as a “it’s just the way it is”… but when it is the way it is… that’s the way it is.

If you asked if there was orange juice in the fridge and we explained that oranges aren’t common in these parts so we don’t have it often… so if you don’t see any in the fridge, then it’s not there. You insisting that it’s not an adequate answer is well… confusing.

I mean hell, someone might come in here with a personal experience that just so happens to gleen some information that you deem useful. But that’s going to mostly be random. Someone digging up a random blog post, forum post, or just personal experience of something failing… that is mostly certainly a possibility, but not exactly what you’re asking for either.

You’re asking for documentation… in which case, you have it. You saw it. Are you asking us to search the documentation on your behalf? Sure, someone might come in here and do that for you, but that’s a bit odd to ask of random forum members.

Otherwise, it’s a matter of if we have “happened” across a part of the documentation and can quickly recall it.

In which case… aside from what you linked. I do recall a part of the unity documentation that had a list of a LOT of the classes in 2.0 that worked and didn’t work. Mind you this was back in like Unity 4/5/2017, and pertains primarily to the older mono implementation, and is specific to the 2.0 profile which isn’t all that useful today now that they’ve revamped the entire .net/mono runtime (there’s a LOT of history here where Unity used to use an outdated mono runtime from Xamarin and due to licensing disputes we were stuck on for years but then finally with work on their IL2CPP compiler and a partnership with Microsoft we finally got 4.x support. A lot of this history is a mish-mash of blog posts, rumors, and other non-documentation stuff). Point is… that list likely wouldn’t help you much as it’s outdated, even if I could find it (I tried).

Which is to Kurt’s statement of it being a moving target. Anything outside of the documentation page you yourself has linked for the version you’re on. Any information you may find may be wrong since the runtime has changed so much since the mid 2000’s when Unity first released.

But hey, maybe someone will come along and give you the piece of information you want. :shrug:, I just know from my 12 years of experience in Unity it’s from a documentation perspective there isn’t a lot out there about what specific parts of the .net library (that are included in unity) are directly working or not in an official way.

So I wouldn’t hold my breathe.

Go test them. See how it works. Probably a lot faster to test the specific parts of the framework you want to use rather than to hope someone comes along with a well documented list of the entire framework (I say entire only because we don’t know which parts you’re concerned about… so to cover any unknowns it’d have to be either luck of the roll or the entire thing). Alternatively you can google about specific parts of the framework you want to use too and see if anyone else has ran into issues. Or you even include the specific parts of the framework you have concerns about which could help anyone reading this thread better answer your question.

And honestly in all my years, when staying within the bounds of the compatibility selection I chose (2.0, 3.5, 4.x) I can barely remember any times I had issues. Cause if you stay down the middle of the road on features of the .net runtime that everyone else is generally using… they work. Cause everyone’s using them.

Which reminds me of your C++ compiler analogy. I don’t know… I’ve been in the development world since the early 90’s and every compiler I’ve used has quarks. They work most of the time, but I’ve ran into weird quarks a lot. I never expected any compiler, any framework, any 3rd party library to just work. I expect them to work with in the middle of the road that most of its users expect it to do. Of course more high profile stuff will have higher expectations… I expect things like GCC or MSBUILD to work really god damn well because they’re in the market of making compilers… but Unity? Unreal? They’re in the market of making game engines. They can’t be bothered if some random aspect of the gigantic .net framework on the edge of game development doesn’t work (meaning most game developers don’t go out that way). They care about if the core aspects that their userbase is going to use works, so that way they can focus their energy on the engine (the thing they’re in the market of making).

Sorry, I can’t be of more assistance.

I think this is due to a miscommunication about whether I am asking for any documentation or documentation that answers my question. I’m asking if there’s anything that answers my question, and if documentation would be possibly one source that would be nice, which apparently there is not if your response is exhaustive. Saying there is documentation that answers my question is inaccurate. That page also says we can get System.Net.Http by using csc files, which is in worst case wrong and best case misleading since we know that there are parts of System.Net.Http that are not implemented. Running into inconsistencies like this is the whole reason I created this post in the first place, looking for insight among the community. This is going in a circle…

For your orange analogy, I’m asking for an orange from the fridge after being told there are oranges, to find my orange is the plastic display kind and inedible. You are telling me the menu is fine even if it lists these oranges as normal edible oranges. The point of the post was to ask the community or Unity developers if there was a better menu, if we know what in the fridge is actually fruit and not plastic, rather than each individual repeating the process on their own. The analogies are getting weird now…

I don’t see how these are relevant. I have a problem, other people on this forum have these problems, is it not a problem because it is not your problem? I am testing them, and I have submitted bug reports, and have been searching other forums. I am using the Unity forums as one of these paths, because it seems the appropriate place. I don’t understand the intention behind telling someone to look elsewhere, if everyone did on every forum did then there would be no discussion.

I specified in my original post that I was looking for a more general solution beyond brute force. If you do not know of one then that is one thing, but responses seem instead focused on my personal acceptance of your responses as final conversation-ending truths. I appreciate the help I’ve received so far, but I would like to leave the question open to anyone who has further insight.

That’s alright, I understand where you are coming from. I just hope you can understand where I am coming from. Here are a couple links that came to mind when making the C++ compiler analogy. These were intended to illustrate the kind of thing that does exist in the software world and I still do not believe are ridiculous to ask about. If you know for certain these do not exist, or have not seen one yet for Unity and the System libraries, then I understand. However, I believe it is an apt analogy because Unity chose to customize compilers as part of their game engine platform. If you believe it is not Unity’s responsibility to manage documentation like this then I understand your opinion. I am not saying that it is therefore their responsibility.

To really sum up my entire response here, I simply hope you understand my intention is to leave the thread and conversation open to the possibility of something like this’ existence. I do not believe I should have to personally accept your opinions and end the thread there.

Open the managed dll’s in ILSpy or similar and search for NotImplementedException references? Should kinda work, as long as they actually throw that instead of silently doing nothing. Possibly find the dll’s in the unity editor install location.

P.S: to elaborate, you can open all at once, and there’s search functionality that will give a list of results across all the assemblies. I don’t mean a manual browsing

P.S 2: Just looked at the DefaultProxyCredentials, it just throws null so wouldn’t show up in the search :confused:

It’s not really opinion but the state of affairs at the moment, as observed by any long term dev here. It’s not what you’re looking for but things seldom are in this fast moving part of the industry.

Some things are in some Unity versions but not others, and this will continue to change, which is why we have TECH releases and LTS releases.

Also as a moderator, I don’t see any problem with the posts in this thread so far. People are able to agree to disagree.