konfiguracja / Visual Studio

Visual Studio 2013 i C# w wersji 6.0

Zostałem dołączony do projektu, w którym używało się Visual Studio 2013 oraz C# w wersji 5.0. Któregoś pięknego dnia, próba skompilowania świeżo pobranego kodu z repozytorium zakończyła się błędami:

Invalid expression term '.'

oraz

Cannot implicitly convert type [nazwa typu] na [inny typ]

Problem okazała się linijka kodu używająca nowych możliwości z C# w wersji 6.0:

return Person?.Name;

OK, pomyślałem w pierwszej chwili, że został podniesiony framework całego projektu, ale nie. Od kolegi dostałem informację, że powinienem sobie zaktualizować MSBuild. No to sobie zaktualizowałem, ale przecież Microsoft Build Tools 2015 z c# 6.0 to wersja 14.0, a Visual Studio 2013 to wersja 12.0, a więc chyba się nie da tak zrobić. Po małym researchu okazało się, że jednak mogę sobie skompilować projekt kompilatorem w wersji nieobsługiwanej – przynajmniej jawnie – przez daną wersję Visual Studio.

A więc podjąłem rękawicę i próbę zainstalowania Microsoft.Net.Compilers. Z zainstalowaniem borykałem się ze dwie godziny, a to dlatego, że przy okazji wystąpił jeszcze jeden problem, który opisałem tutaj, a próba kompilacji zakończyła się częściowym sukcesem. Dlaczego?

  1. Mimo, że projekt się kompiluje to wciąż pojawiają się błędy na liście błędów co jest bardzo mylące i brzydkie.
  2. W kodzie intellisense nie podpowie nam składni, a poza tym oznaczy składnię nowszej wersji jako błędną. Podobno R# sobie z tym radzi, ale nie próbowałem.

Reasumując. Osobiście nie próbowałbym sztuczek z wykorzystaniem wersji języka nie w pełni obsługiwanych przez Visual Studio. No chyba, że nie byłoby innego wyjścia, ale w tym konkretnym przypadku wystarczyłoby użyć Visual Studio 2015 i cieszyć się życiem, a nie wyklinać pod niebiosa pomysłodawców rozwiązania.

 

Leave a Reply

Your email address will not be published. Required fields are marked *