EDIT [Nov 29 2020]: .NET 5.0 is out now, but the solution below is still required if you're targetting .NET Standard 2.1
C# 9.0 is still under development. There are a couple references which lead me to believe it should be testable now (some of it, anyway).
I'm using VS 2019 16.7 Preview 3.1. I've selected the language version as Preview for a project.
Some C# 9 features, I can use. Like: Dictionary<string, object> Stuff = new()
But using the new init
feature gives me this error: Error CS0518 Predefined type 'System.Runtime.CompilerServices.IsExternalInit' is not defined or imported
How do I fix this?
Examples of code causing the error:
class Test { public int Hello { get; init; } }
and
record Test(int hello);
The record definition is shorthand and expands into something that uses init
, which is why it's also affected.
The language tracking page I linked to above says the feature was Merged into 16.7p3
, which I am using.
Am I just being overly excited? Do I need to wait? Or is there a way to play with these features right now :D
EDIT (requested in comments) - Adding csproj for .net 5.0 console app:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net5.0</TargetFramework> <LangVersion>preview</LangVersion> </PropertyGroup> </Project>
EDIT #2: A workaround posted here - https://github.com/dotnet/roslyn/issues/45510
Testing means verifying correct behavior. Testing can be done at all stages of module development: requirements analysis, interface design, algorithm design, implementation, and integration with other modules.
One unit testing framework in C is Check; a list of unit testing frameworks in C can be found here and is reproduced below. Depending on how many standard library functions your runtime has, you may or not be able to use one of those.
The most scalable way to write unit tests in C is using a unit testing framework, such as: CppUTest. Unity. Google Test.
Create a test project in Visual Studio 2019Right-click on the Solution node in Solution Explorer. In the pop-up menu, choose Add > New Project. Set Language to C++ and type "test" into the search box.
This is a bug in the current preview and the latest master branch (June 27). A simple record in sharplab.io creates the same error.
Just add the missing type somewhere in your project
using System.ComponentModel; namespace System.Runtime.CompilerServices { [EditorBrowsable(EditorBrowsableState.Never)] internal class IsExternalInit{} }
Records and init
will work without problem.
Only LinqPad 6 seems to work without problems, probably because it includes that type too
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With