Reputation: 13437
I'm using VS 2013 with .Net Framework 4.6. I want to use new C# 6 features(For example nameof
).But I couldn't found it.
Should I use VS 2015? Or higher .Net Framework?
Upvotes: 38
Views: 51867
Reputation: 65534
If you get this error and are using the latest .Net it could be because you are using the name of something that isn't a .Net Type. Here's an example:
Original with need to replace HardCoded "BaseUrl".
IConfiguration settingsConfig = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
Settings = Options.Create(new Settings
{
BaseUrl = settingsConfig.GetSection("BaseUrl").Value
});
This causes the error and it doesn't work because the BaseUrl doesn't exist in context:
IConfiguration settingsConfig = new ConfigurationBuilder().AddJsonFile("appsettings.json").Build();
Settings = Options.Create(new Settings
{
BaseUrl = settingsConfig.GetSection(nameof(BaseUrl)).Value
});
You need to fully qualify or specify a .Net Type that exists, eg:
Settings = Options.Create(new Settings
{
BaseUrl = settingsConfig.GetSection(nameof(Settings.BaseUrl)).Value
});
Upvotes: 0
Reputation: 2054
I got this error when using DotNetFiddle, I just switched to .NET Core instead of .NET 4.7.X.
Upvotes: 5
Reputation: 3194
Installing this nuget package fixed it for my project.
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Upvotes: 6
Reputation: 2367
If you are getting this error in Teamcity, make the following changes to build step to correct it.
Upvotes: 2
Reputation: 1624
Upvotes: 0
Reputation: 2784
In pre-VS2015 you can add the following class to your solution and replace all instances of nameof(
with NameOf.nameof(() =>
as suggested in get name of a variable or parameter
using System;
using System.Linq.Expressions;
namespace ICSharpCode.SharpZipLib
{
public class NameOf
{
public static String nameof<T>(Expression<Func<T>> name)
{
MemberExpression expressionBody = (MemberExpression)name.Body;
return expressionBody.Member.Name;
}
}
}
Upvotes: 5
Reputation:
You will not be able to use C#6 in VS2013. The compiler will not understand the new C# 6 syntax you are trying to use. How can I add C# 6.0 to Visual Studio 2013?
Upvotes: 4
Reputation: 3326
yes you need to use Visual Studio 2015. It's not supported in VS 2013. Related link : https://msdn.microsoft.com/en-us/library/dn986596.aspx
Upvotes: 6
Reputation:
Yes, to use C# 6 features, you need a C# 6 compiler. Visual Studio 2013 doesn't have a C# 6 compiler. Visual Studio 2015 does.
There have been Roslyn pre-releases for Visual Studio 2013, but they don't implement the final C# 6: they actually don't implement all the features, and what they do implement is different from the final C# 6 behaviour.
Upvotes: 42