visual studio 2019 version c# probleme - c#

I can not change the version of C # on visual studio 2019
I tried to go to the property to access a window that normally allowed to change the version of C #
Error CS8025 The 'local functions' feature is not available in C # 4. Use version 7.0 or later.

I'm assuming you're using .Net Core. Within the .csproj file for your start-up project (executable, web, web API, whichever it is in your case), add the following:
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
See the docs for more details.

Right click on your csproj in the solution explorer.
Select properties.
Select 'Build' near the top left of the screen.
Click 'Advanced' in the main window (scroll down if you can't see it).
Change language version to latest minor version.

I was not able to edit the language in the property page.
I had to add this to the csproj which was not able to build.
in the propertyGroup, right where AsseblyName is for my .netcore 3 project.
<LangVersion>8</LangVersion>
you should probably use the version according to your .net framework version, the table is here:
The compiler determines a default based on these rules:
DEFAULTS
Target framework C# language version default
.NET 6.x C# 10
.NET 5.x C# 9.0
.NET Core 3.x C# 8.0
.NET Core 2.x C# 7.3
.NET Standard 2.1 C# 8.0
.NET Standard 2.0 C# 7.3
.NET Standard 1.x C# 7.3
.NET Framework all C# 7.3
source:
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version

Related

How do I change the C# version in Visual Studio 2019

I'm currently writing a project in C# 7.3 but I need to change it to C# 10.0
When I go to my project's properties' advanced build settings, the option to change the language version is disabled. I'm not sure why it's grayed out, but I don't know how to manually change the C# version. If someone could help, that would be great, thanks!
Screenshot of the advanced build settings
Taken directly from the documentation
The compiler determines a default based on these rules:
Target framework
version
C# language version default
.NET
7.x
C# 11
.NET
6.x
C# 10
.NET
5.x
C# 9.0
.NET Core
3.x
C# 8.0
.NET Core
2.x
C# 7.3
.NET Standard
2.1
C# 8.0
.NET Standard
2.0
C# 7.3
.NET Standard
1.x
C# 7.3
.NET Framework
all
C# 7.3
C# 10 is supported only on .NET 6 and newer
You haven't provided the target framework for your project. But you likely need to retarget your project to a framework that supports C#10
You can try to edit the .csproj file by adding something like this:
<PropertyGroup>
<LangVersion>10.0</LangVersion>
</PropertyGroup>
C#10 is already the default language version if your target framework is .NET 6, provided you're not overriding it with the LangVersion entry as mentioned in other answers. If you're not targeting .NET 6 or compiling with VS/Build Tools 2022, you'll need to upgrade those first in order to have proper C#10 support.
If you are attempting to set the C# language version manually, keep in mind the default can be overridden in two locations (or programmatically): the project file (aka ProjectName.csproj), or a Directory.Build.props file (for explicitly overriding multiple projects at once). If the aforementioned props file exists, check it as well as your project file to ensure you don't have conflicting entries.
In your case, there's really no reason to manually specify the language version; just upgrade your compiler and use the default. If at that point you still find the project targeting anything < C#10, be aware that the culprit isn't necessarily confined to being the project file.

Update C# Windows Forms Project to Latest C# Version

I have a C# Windows Forms project but I need to update it to the latest version of the C# language but I don't understand the documentation for updating, does anyone have an example of how to do this?
I'm using version 4.6 of Net Framework, I've tried it with 4.8 too
You can set the LangVersion property in the .csproj file to specify the C# version you'd like to use. You can set it to a specific version, or use "latest" to set it to the latest version compatible with the compiler:
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
</Project>
Be aware that only certain versions of the C# language are compatible with specific .NET versions and MSBuild Versions. The highest version of C# compatible with .NET Framework is 7.3.
You can find more information, including C# / .NET version compatibility, here:
C# language versioning

How do I create a C# 8.0 Console application?

I tried creating a Windows Forms .NET core 3.1 application via the template and switching the output type to Console Application.
Here's my code:
static class Program
{
static void Main()
{
System.Console.WriteLine(0 switch { 0 => "Hello World" });
}
}
When I compile I get:
error CS8370: Feature 'recursive patterns' is not available in C# 7.3. Please use language version 8.0 or greater.
I'm targeting .NET Core 3.1. I thought that would get me C# 8.0 language features by default. Apparently I am mistaken.
What do I do?
EDIT: I'm using Visual Studio 2019 16.3.9
This is the part that confuses me the most because it says that the Language version is "Automatically selected based on framework version" (and I can't change it.) Also I don't see an adequate explanation of why I can't change language versions at Why can't I select a different C# version? That page says that if I'm using .NET Core 3.x that I should be using C# 8.0.
The .csproj file is as follows:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.1</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationIcon />
<StartupObject>Program</StartupObject>
</PropertyGroup>
</Project>
Adding this line fixes the problem:
<LangVersion>8.0</LangVersion>
But is that really the only way to create an application? I have to manually edit my .csproj? Why can I not change the Language version and why is it not automatically selecting C# 8.0 based on me using .NET Core 3.1?
Open your csproj and see if you have a line like
<LangVersion>7.3</LangVersion>
If yes try removing it, if that doesn't work try to change it to 8.0
From https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/configure-language-version#defaults
You should remove the
<LangVersion>latest</LangVersion> from your project file when you
update the .NET SDK.
I had the same problem (c#8 unavailable on Core 3.1 project) and I fixed it that way :
Uninstall previous version of Visual studio (2015 and 2017 in my
case)
Repair Visual studio 2019 (V16.4.1 in my case) with "visual studio installer" launched with administrator right.
No need of LangVersion in csproj.

netcoreapp3.1 appears to reference C# 7.3 and not 8 as documented

I've updated an existing asp.net mvc app from netcoreapp3.0 to netcoreapp3.1, along with all referenced packages. The project settings have the target framework and my PC has the SDK installed
<TargetFramework>netcoreapp3.1</TargetFramework>
I have an error in a place where I use the C# coaslescing assignment feature ??= This was working without issue before updating. #SebastianHofmann has kindly confirmed other C#8 features do not work either.
Error CS8370 Feature 'coalescing assignment' is not available in C# 7.3.
Please use language version 8.0 or greater.
According to MSFT netcoreapp3.1 should be using C#8 and indeed must
The advance project settings I just saw has been disabled within Visual Studio 2019 (16.3.10)
I can toggle back to 3.0 and it compiles again
I've added ??= to an existing Core 3 project and had no errors, then updated VS with latest patch (V 4.7.03062) to get 3.1, then upgraded the project to 3.1 also with no error. the only way I could get your error was down grading the project to 2.1. Is it worth running a repair / update on your VS.

How do I make VSCode use C# 7 instead of C# 4?

My VSCode debugger says that I'm using c# 4. I can't find any docs about getting VSCode to switch to C# 7. I'm on Windows 10. I don't know if this is a DotNet Core issue, a VSCode issue, or an Omnisharp issue. I would appreciate someone pointing me to a set of instructions or posts that solved this problem.
A snipet from the top of my VSCode .csproj file:
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0"
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup> <LangVersion>4</LangVersion> </PropertyGroup>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
These are my VSCode versions:
Version: 1.27.2 (user setup)
Commit: f46c4c469d6e6d8c46f268d1553c5dc4b475840f
Date: 2018-09-12T16:17:45.060Z
Electron: 2.0.7
Chrome: 61.0.3163.100
Node.js: 8.9.3 V8: 6.1.534.41
Architecture: x64
.NET Core SDK version 2.1.402 (x64)
As you've pointed out in the portion of your question where you posted the csproj, the current language version is set to 4.
<LangVersion>4</LangVersion>
You can get the latest features for C# 7.3 by setting it to <LangVersion>7.3</LangVersion>
If you merely want the C# 7.0 features, you can set the value to <LangVersion>7</LangVersion>
This document lists the (currently) valid options that can be passed to the -langversion compiler flag. If you want your project to always compile with the latest available version of C#, you can set the value to <LangVersion>latest</LangVersion> in your .csproj. Of course, this will only compile to the latest version supported by your version of the compiler.
The behavior of the default value has changed in recent versions of the compiler. The document accurate at the time of editing is this one, which states the following:
The compiler determines a default based on these rules:
Target framework
Version
C# language version default
.NET Core
6.x
C# 10.0
.NET Core
5.x
C# 9.0
.NET Core
3.x
C# 8.0
.NET Core
2.x
C# 7.3
.NET Standard
2.1
C# 8
.NET Standard
1.x/2.0
C# 7.3
.NET Framework
all
C# 7.3
You just need to update your
<PropertyGroup> <LangVersion>4</LangVersion> </PropertyGroup>
To the version you want

Categories

Resources