views:

310

answers:

1

I'm trying to compile a POCO with this code

public class MenuItem
{
    public string Name 
    { get; set; }
    public string Url
    { get; set; }
}

I keep getting compile errors on the gets and sets with messages like: 'MenuItem.Name.get' must declare a body because it is not marked abstract or extern. What am I missing? I'm compiling this class in the App_Code folder of a local filesystem web site that is set to compile as .NET 3.5. I know I have done this before, but can't figure out what I am doing differently.

+12  A: 

Make sure your Web.config file contains a <system.codedom> subelement under <configuration> element like this:

<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"
              type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <providerOption name="CompilerVersion" value="v3.5"/>
      <providerOption name="WarnAsError" value="false"/>
    </compiler>
  </compilers>
</system.codedom>

The problem arises from the fact that ASP.NET is running the old version of C# compiler to compile your application (v2.0) which does not support automatic properties. In order to use .NET 3.5 features, you have to specify the compiler version in your Web.config explicitly.

Mehrdad Afshari
Thanks. Someone with editing rights can you fix the missing closing </compilers> tag.
tyndall
Oops, sure. I fixed it! StackOverflow needs IntelliSense! LOL!
Mehrdad Afshari