Ошибка: необходимо объявить тело, потому что оно не помечено как абстрактное или внешнее - PullRequest
0 голосов
/ 18 декабря 2018

Возникла небольшая проблема, позволяющая устранить эту ошибку при компиляции с 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 ]

0 голосов
/ 18 декабря 2018

Я хочу поблагодарить всех за помощь в этом.Это подтолкнуло меня в правильном направлении.Занимался немного большим чтением и нашел это как решение.Следующий способ - самый простой способ, который я нашел, который может сделать автономный 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

0 голосов
/ 18 декабря 2018

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

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

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

...