Inline variable declaration not compiling

21,403

Solution 1

I was able to resolve this by installing the Microsoft.Net.Compilers nuget package for v2.0.0-rc3, the only version installed prior was 1.3.2.

I still don't understand why the intellisense and compiler errors would show up if the installed compiler didn't support this.

Solution 2

In case the above answer doesn't work for you, as it didn't work for me do the following:

Open the csproj file and check if you have the following package referenced in the file after the upgrade, if yes, remove it.

<Import Project="packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />

Next, check the "Project ToolsVersion". It has to be 15.0, it probably is 14.0 though so you have to change that.

<Project ToolsVersion="15.0" .../>

Then simply reload the SOLUTION and you're good to go. Be aware that if you select "Reload Project" it will give you an error and not load it.

Share:
21,403
prudan
Author by

prudan

Updated on July 16, 2022

Comments

  • prudan
    prudan almost 2 years

    I've been getting a message in Visual Studio 2017, specifically, IDE0018 Variable declaration can be inlined.

    So I try using an inline variable declaration the way it's mentioned in the visual studio 2017 release notes, but I can't get my project to compile.

    It show no error messages, but the output shows "Rebuild All failed..... error CS1525: Invalid expression term 'int'"

    The error only shows up in the output, not as an actual error in the error list.

    Here is an actual example of the code I'm using that is failing.

    if (int.TryParse(ExpYear, out int IExpYear))
      {
        if (IExpYear < DateTime.Now.Year || IExpYear > DateTime.Now.AddYears(10).Year)
        {
          e += "Expiration Year is invalid.\n";
        }
      }
      else
      {
        e += "Expiration Year is not a number.\n";
      }
    

    If I revert the change, it compiles as expected. Is it possible that I'm not using the c#7 compiler somehow?

    Thank you.

    Update: I found the language setting in Build > Advanced and set it to C# 7.0. Building the project now gives me this error:

    CSC : error CS1617: Invalid option '7' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.

  • isabasan
    isabasan about 7 years
    You should note that Microsoft.Net.Compilers is not supported by Visual Studio For Mac. P.S. I can't comment cause of reputation, so I only could write an answer.
  • Paul Becker
    Paul Becker about 7 years
    This was the right answer for me, i upgraded from VS 2015 to 2017, and also had Compilers 1.3.2 installed in the past. There was still a reference to it in the csproj, even after upgrading to 2.0.1
  • gsharp
    gsharp almost 7 years
    yes did it for me too. i had a huge mess in my csproj file. thanks!
  • Matt
    Matt over 6 years
    Strangely, I tried that and got this other issue afterwards. Changed tools version from 12.0 to 15.0 and removed the import.
  • Aske B.
    Aske B. over 6 years
    For me, updating Microsoft.Net.Compilers package resulted in the project running fine locally, but being unable to build (dynamic compilation) on the server I publish to. So just note that there might be multiple steps needed if you want to support it.
  • Julio Nobre
    Julio Nobre almost 5 years
    In our case, beside changing ToolsVersion from 14.0 to 15.0, on project file (.csproj), we also had to install an updated version of MSBuild, since compilation is being triggered my a Jenkins job. After installing Build Tools For Visual Studio 2019, we got MsBuild version 16.0, upon which all new C# features compiles succesfully.