Ошибка: необходимо объявить тело, потому что оно не помечено как абстрактное или внешнее
Возникла небольшая проблема с получением этой ошибки при компиляции с 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