W przypadku używania Visual Studio Enterprise 16.3.7
na dwóch osobnych komputerach jedna buduje się dobrze, a druga maszyna zgłasza błąd:
Funkcja „używanie deklaracji” nie jest dostępna w C # 7.3. Proszę użyć wersji językowej 8.0 lub nowszej.
To można łatwo rozwiązać na maszynie roboczej brak ustawiając LangVersion
w .csproj
jak sugeruje tutaj https://stackoverflow.com/a/48085575/3850405 albo niech Visual Studio automatycznie naprawić jak ekranie wydruku powyżej.
<LangVersion>8.0</LangVersion>
Nie rozumiem, dlaczego jedna maszyna dobrze się buduje bez tego wejścia, .csproj
a druga potrzebuje jej?
dotnet --list-sdks
pokazuje.NET Framework 4.6.1
iLangVersion
nie jest ustawiony.Odpowiedzi:
Otrzymałem ten sam błąd, ale po prostu zapomniałem dołączyć
atrybut we WSZYSTKICH plikach .csproj w rozwiązaniu. Oto moja obecna konfiguracja c # 8:
Uważam, że następujące dokumenty są najbardziej pomocne podczas migracji z rdzenia 2.2 do 3.x:
MSDN 2.2 -> 3.0
MSDN 3.0 -> 3.1
źródło
<LangVersion>latest</LangVersion>
zamiast<LangVersion>8.0</LangVersion>
MSDN 2.2 -> 3.0
powinien zawierać link do następujących dokumentów: docs.microsoft.com/en-us/aspnet/core/migration/22-to-30 Próbowałem edytować odpowiedź, aby ją zmienić, ale „sugerowana kolejka edycji jest pełny ”, więc zamiast tego opublikuję tutaj.Musiałem zaktualizować Visual Studio do wersji z 16.3.X do 16.4.2. To rozwiązało problem i nie musiałem dodawać żadnej wersji LangVersion.
Kredyty: https://github.com/aspnet/AspNetCore.Docs/issues/16047
źródło
Może to być spowodowane tym, że kompilator domyślnie używa różnych wersji językowych C # dla różnych struktur docelowych.
Aby zastąpić domyślny język C #, dodaj do pliku projektu (zgodnie z sugestią w pytaniu):
lub:
Zobacz Wersje językowe C #, aby uzyskać domyślne wersje językowe C # dla różnych platform docelowych i jak ręcznie wybrać wersję językową C #.
Zobacz także odpowiedź na temat przepełnienia stosu Czy C # 8 obsługuje .NET Framework? po więcej informacji na ten temat.
Oto część artykułu na temat wersji językowej C # :
Wersja językowa w C #
Najnowszy kompilator C # określa domyślną wersję językową na podstawie docelowych ram lub ram projektu. Wynika to z faktu, że język C # może mieć funkcje zależne od typów lub składników środowiska wykonawczego, które nie są dostępne w każdej implementacji platformy .NET. Zapewnia to również, że niezależnie od celu, na którym opiera się Twój projekt, domyślnie otrzymujesz najwyższą kompatybilną wersję językową.
Reguły w tym artykule dotyczą kompilatora dostarczanego z Visual Studio 2019 lub .NET Core 3.0 SDK. Kompilatory C #, które są częścią instalacji Visual Studio 2017 lub wcześniejszej wersji zestawu .NET Core SDK, domyślnie korzystają z C # 7.0.
Domyślne
Kompilator określa wartość domyślną na podstawie następujących reguł:
Zastąp ustawienie domyślne
Jeśli musisz jawnie określić swoją wersję C #, możesz to zrobić na kilka sposobów:
Edytuj plik projektu
Możesz ustawić wersję językową w pliku projektu. Na przykład, jeśli chcesz bezpośrednio uzyskać dostęp do funkcji podglądu, dodaj taki element:
Ta wartość
preview
korzysta z najnowszej dostępnej wersji językowej C # podglądu obsługiwanej przez kompilator.Skonfiguruj wiele projektów
Aby skonfigurować wiele projektów, możesz utworzyć plik Directory.Build.props zawierający ten
<LangVersion>
element. Zazwyczaj robisz to w katalogu rozwiązań. Dodaj następujące elementy do pliku Directory.Build.props w katalogu rozwiązania:Teraz kompilacje w każdym podkatalogu katalogu zawierającego ten plik będą używać wersji zapoznawczej C #. Aby uzyskać więcej informacji, zobacz artykuł na temat dostosowywania kompilacji .
źródło
Pobrałem najnowszą wersję .Net Core 3.0 i 3.1 i miałem ten sam problem. Dla mnie poprawka zdawała się pobierać najnowszą aktualizację programu Visual Studio 2019 (do wersji 16.4.2).
Spowodowało to również ponowne uruchomienie komputera i błąd zniknął.
źródło