.NET - Ошибка при попытке скомпилировать автоматические свойства - PullRequest
4 голосов
/ 16 декабря 2008

Я пытаюсь скомпилировать POCO с этим кодом

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

Я получаю ошибки компиляции при получении и установке с сообщениями вроде: «MenuItem.Name.get» должен объявлять тело, потому что оно не помечено как абстрактное или внешнее. Что мне не хватает? Я компилирую этот класс в папке App_Code локального веб-сайта с файловой системой, который настроен на компиляцию как .NET 3.5. Я знаю, что делал это раньше, но не могу понять, что я делаю по-другому.

1 Ответ

12 голосов
/ 16 декабря 2008

Убедитесь, что ваш файл Web.config содержит подэлемент <system.codedom> в элементе <configuration>, например:

<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>

Проблема возникает из-за того, что ASP.NET использует старую версию компилятора C # для компиляции вашего приложения (v2.0), которое не поддерживает автоматические свойства. Чтобы использовать функции .NET 3.5, вам необходимо явно указать версию компилятора в Web.config.

...