我在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&gt;中找到了语言设置。高级并将其设置为C#7.0。现在构建项目会给我这个错误:
CSC:错误CS1617:/ langversion的选项'7'无效;必须是ISO-1,ISO-2,Default或1到6范围内的整数。
答案 0 :(得分:37)
我能够通过为 v2.0.0-rc3 安装Microsoft.Net.Compilers
nuget软件包解决此问题,之前安装的唯一版本是 1.3.2 。
我仍然不明白为什么如果安装的编译器不支持这个错误会出现intellisense和编译器错误。
答案 1 :(得分:14)
如果上述答案对您不起作用,因为它对我不起作用,请执行以下操作:
打开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')" />
接下来,检查&#34; Project ToolsVersion&#34;。它必须是15.0,它可能是14.0,所以你必须改变它。
<Project ToolsVersion="15.0" .../>
然后只需重新加载解决方案就可以了。请注意,如果您选择&#34;重新加载项目&#34;它会给你一个错误而不加载它。
答案 2 :(得分:0)
要设置使用最新发布的C#编译器,请执行以下操作:
在Visual Studio中,(我正在使用Visual Studio 2017),右键单击项目并选择“属性”
选择左侧菜单栏中的“构建”标签
点击“构建”窗口右下角的“高级...”按钮
在“常规”下的“语言版本”右侧的列表框中,选择“ C#最新次要版本(最新)”
此外,请确保使用Visual Studio安装程序使Visual Studio IDE保持最新。