内联变量声明不编译
Inline variable declaration not compiling
我在 Visual Studio 2017 年收到了一条消息,具体来说,IDE0018 Variable declaration can be inlined.
所以我尝试按照 visual studio 2017 发行说明中提到的方式使用内联变量声明,但我无法编译我的项目。
它没有显示任何错误消息,但输出显示“Rebuild All failed..... error CS1525: Invalid expression term 'int'
”
错误仅显示在输出中,而不是错误列表中的实际错误。
这是我正在使用的失败代码的实际示例。
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";
}
如果我还原更改,它会按预期进行编译。有没有可能我没有使用 c#7 编译器?
谢谢。
更新:我在Build > Advanced中找到了语言设置,并将其设置为C# 7.0。现在构建项目给我这个错误:
CSC : error CS1617: Invalid option '7' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.
我能够通过为 v2.0.0-rc3 安装 Microsoft.Net.Compilers
nuget 包来解决这个问题,之前安装的唯一版本是 1.3 .2。
我仍然不明白如果安装的编译器不支持这个,为什么会出现智能感知和编译器错误。
如果上面的答案对你不起作用,因为它对我不起作用,请执行以下操作:
打开csproj文件,查看升级后文件中是否引用了以下包,如果有,请移除。
<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')" />
接下来,检查"Project ToolsVersion"。它必须是 15.0,但可能是 14.0,所以你必须改变它。
<Project ToolsVersion="15.0" .../>
然后只需重新加载解决方案即可。请注意,如果您 select "Reload Project" 它会给您一个错误并且不会加载它。
设置使用最新发布的 C# 编译器:
在Visual Studio中(我用的是Visual Studio 2017),右击项目然后select "Properties"
Select 左侧菜单栏中的 "Build" 选项卡
点击"Build"window
右下角的"Advanced..."按钮
在 "Language Version" 右侧列表框中的 "General," 下,select "C# latest minor version (latest)"
此外,确保使用 Visual Studio 安装程序使 Visual Studio IDE 保持最新。
我在 Visual Studio 2017 年收到了一条消息,具体来说,IDE0018 Variable declaration can be inlined.
所以我尝试按照 visual studio 2017 发行说明中提到的方式使用内联变量声明,但我无法编译我的项目。
它没有显示任何错误消息,但输出显示“Rebuild All failed..... error CS1525: Invalid expression term 'int'
”
错误仅显示在输出中,而不是错误列表中的实际错误。
这是我正在使用的失败代码的实际示例。
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";
}
如果我还原更改,它会按预期进行编译。有没有可能我没有使用 c#7 编译器?
谢谢。
更新:我在Build > Advanced中找到了语言设置,并将其设置为C# 7.0。现在构建项目给我这个错误:
CSC : error CS1617: Invalid option '7' for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.
我能够通过为 v2.0.0-rc3 安装 Microsoft.Net.Compilers
nuget 包来解决这个问题,之前安装的唯一版本是 1.3 .2。
我仍然不明白如果安装的编译器不支持这个,为什么会出现智能感知和编译器错误。
如果上面的答案对你不起作用,因为它对我不起作用,请执行以下操作:
打开csproj文件,查看升级后文件中是否引用了以下包,如果有,请移除。
<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')" />
接下来,检查"Project ToolsVersion"。它必须是 15.0,但可能是 14.0,所以你必须改变它。
<Project ToolsVersion="15.0" .../>
然后只需重新加载解决方案即可。请注意,如果您 select "Reload Project" 它会给您一个错误并且不会加载它。
设置使用最新发布的 C# 编译器:
在Visual Studio中(我用的是Visual Studio 2017),右击项目然后select "Properties"
Select 左侧菜单栏中的 "Build" 选项卡
点击"Build"window
右下角的"Advanced..."按钮在 "Language Version" 右侧列表框中的 "General," 下,select "C# latest minor version (latest)"
此外,确保使用 Visual Studio 安装程序使 Visual Studio IDE 保持最新。