I'm developing a UWP library which has public properties and method parameters of StreamSocket class. However, I'm getting "StreamSocket is not CLS-compliant" warning. What's so special there that Microsoft decided to leave the respective assembly non-CLS-compliant and are there any potential issues I should know about when using/distributing this library? Maybe CLS incompliance will somehow limit the ways my library can be used by other developers?
Getting "Argument type 'StreamSocket' is not CLS-compliant" warning on build
345 Views Asked by Alex At
1
There are 1 best solutions below
Related Questions in C#
- Passing arguments to main in C using Eclipse
- kernel module does not print packet info
- error C2016 (C requires that a struct or union has at least one member) and structs typedefs
- Drawing with ncurses, sockets and fork
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- Configured TTL for A record(s) backing CNAME records
- Allocating memory for pointers inside structures in functions
- Finding articulation point of undirected graph by DFS
- C first fgets() is being skipped while the second runs
- C std library don't appear to be linked in object file
- gcc static library compilation
- How to do a case-insensitive string comparison?
- C programming: Create and write 2D array of files as function
- How to read a file then store to array and then print?
- Function timeouts in C and thread
Related Questions in UWP
- Error connecting UWP app to Arduino by USB
- Need xaml ellipse to contain two fill colors that can move up or down like filling a gas tank
- OAuth in PlayReady License Retrieval in UWP
- Cannot set combobox selected item opening a view
- UWP MediaPlayerElement Backwards Compatibility
- How to completely close/release a WebView after it has loaded a youtube link?
- My application has no rights on any folder
- UWP Get Rotation Value (Angle) from Storyboard Animation During or After
- How to load images to a page as soon as they are loaded from a folder in UWP
- How to store setting with UWP C#?
- Cannot create an URI file from text-to-speech audio on UWP
- Create and Delete Folder. Move the file to folder and move the file to outside of the folder
- Using custom video Effects with MediaElement
- UWP xaml: How to display a button with icon and text in it?
- Enlarge image after click C# UWP
Related Questions in CLS-COMPLIANT
- Getting "Argument type 'StreamSocket' is not CLS-compliant" warning on build
- Can an assembly that includes a non-CLS-compliant reference be CLS-compliant?
- Why does C# include programming constructs that are not CLS-compliant?
- Why is my MEF usage not CLS-compliant?
- CLS compat Public properties naming validation routine
- Jagged array CLS-compliance different in C# and VB?
- Why is this not cls-compliant?
- How to fix CLS-Compliant in autogenerated XSD code
- CLS compliant attributes and array parameters
- Implications of protected variable starting with _ and CLSCompliant attribute
- Justification for CLS specification : The accessibility of the property and of its accessors must be identical
- If enums are not CLS-compliant what can I use instead?
- Setting the CLSComplaint attribute to true shows error with VisualStudio 2022
- 'Arrays as attribute arguments is not CLS-compliant' warning, but no type information given
- Marking all classes in a project CLS Compliant
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Well, from the documentation:
If you design a CLS–compliant class library, your library will have a guarantee of interoperability with a wide range of programming languages; therefore, your library is likely to have a wider customer base than a version that is not CLS-compliant.
So the [obvious] answer is that they did not have "programming language interoperatibility" in mind when they coded that thing.
I am not surprised to be honest, MS is not exactly known for strictness (IE anyone?)
Read more here: https://msdn.microsoft.com/en-us/library/bhc3fa7f.aspx
UPDATE:
I will try to demystify this a little bit based on the comments.
The CLS (Common Language Specification) defines the features that any language that targets the .NET Framework MUST support. Hence, you should only care about it if your libraries are going to be consumed by a .NET language.
For instance, there is a restriction in the CLS that says that class and member names cannot differ only by case. You can't have one property named MySocket and another one named mySocket. This is important for languages like VB .NET which are not case sensitive.
In the case at hand, your library is exposing StreamSocket, which is not marked as CLS Compliant. What if this class has methods like the samples above and you try to use your library in some VB.NET project? This is what the compiler is warning you about.