Ошибка: необходимо объявить тело, потому что оно не помечено как абстрактное или внешнее

Возникла небольшая проблема с получением этой ошибки при компиляции с csc.exe на Win10. Я очень новичок в C#. Я немного учусь перед тем, как начать посещать занятия в январе.

После учебника "TeamTreehouse" о том, как это сделать. Они используют mono в их рабочих пространствах. Я предпочитаю использовать vscode на моей машине, чтобы ознакомиться с использованием C# за пределами моно.

Из того, что я прочитал на CS0501 с моей проблемой, является то, что это проблема компилятора, которая не должна быть проблемой, но использование csc.exe вызывает проблему. Добавление abstract дает совершенно новый набор вопросов.

Команда, используемая для компиляции из терминала csc *.cs

Я не уверен, где искать решение. Я не смог найти работающий, используя то, что называется Auto-Implemented Properties,

Ошибка

Invader.cs(6,39): ошибка CS0501: "TreehouseDefense.Invader.Location.get" должен объявить тело, поскольку оно не помечено как абстрактное или внешнее

Invader.cs(6,52): ошибка CS0501: "TreehouseDefense.Invader.Location.set" должен объявить тело, поскольку оно не помечено как абстрактное или внешнее

Код Invader.cs

namespace TreehouseDefense {

    class Invader {

        public MapLocation Location { get; private set; }

    }
}

Проект Object_Project.csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
  </PropertyGroup>

</Project>

2 ответа

Вы используете компилятор C# 2 с 2005 года. C# 2 не поддерживает автоматически реализованные свойства - наряду со всеми другими функциями, которые являются частью современного C#.

Вы хотите запустить компилятор C# 7. Я бы предложил установить Visual Studio 2017 Community Edition и использовать командную строку Visual Studio 2017, чтобы получить правильную версию csc находится на пути.

Или просто загрузите .NET Core SDK и используйте dotnet Команда построить и запустить вместо csc,

Я хочу поблагодарить всех за помощь в этом. Это подтолкнуло меня в правильном направлении. Занимался немного большим чтением и нашел это как решение. Следующий способ - самый простой способ, который я нашел, который может сделать автономный EXE. Я не смог получить dotnet build, dotnet publish, или же msbuild работать. Еще есть чему поучиться.

Это установит Microsoft (R) Visual C# Compiler version 2.10.0.0 (b9fb1610)

  • устанавливать NuGet v4.8.1 Ссылка для скачивания
  • открытый NuGet в Command Prompt и побежал nuget install Microsoft.Net.Compilers
  • Перенес пакет, в который он скачал C:\Windows\Microsoft.NET
  • Добавлена ​​новая переменная среды PATH с C:\Windows\Microsoft.NET\Microsoft.Net.Compilers.2.10.0\tools (Также переместил это выше существующего, которое я имел, могло быть также удалено)

csc *.cs теперь делает автономный EXE

Другие вопросы по тегам