错误:必须声明一个主体,因为它没有标记为abstract或extern

时间:2018-12-18 15:18:46

标签: c# windows visual-studio-code csc

在Win10上使用csc.exe进行编译时,有一个问题需要清除此错误。我是C#的新手。在我在一月份开始上课之前先做一些自我学习。

按照“ TeamTreehouse”教程进行操作。他们在工作区中使用mono。我更喜欢在机器上使用vscode来熟悉在mono之外使用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 :(得分:3)

您使用的是2005年以前的C#2编译器。C#2不支持自动实现的属性-以及现代C#的所有其他功能。

您要运行C#7编译器。我建议安装Visual Studio 2017 Community Edition,并使用Visual Studio 2017命令提示符,以便正确的csc版本在路径上。

或者直接下载.NET Core SDK并使用dotnet命令而不是csc来构建和运行。

答案 1 :(得分:0)

我想感谢大家在此方面的帮助。它使我指向了正确的方向。已经做了更多的阅读,并找到了解决方案。以下方法是我发现可以制作自包含EXE的最简单方法。我无法使dotnet builddotnet publishmsbuild正常工作。还有很多东西要学习。

这将安装Microsoft (R) Visual C# Compiler version 2.10.0.0 (b9fb1610)

  • 安装NuGet v4.8.1 Link to Download
  • NuGet中打开Command Prompt,然后运行nuget install Microsoft.Net.Compilers
  • 将下载的软件包移动到C:\Windows\Microsoft.NET
  • 使用PATHC:\Windows\Microsoft.NET\Microsoft.Net.Compilers.2.10.0\tools添加了一个新的环境变量(也将其移到了我现有的环境变量之上,也可以将其删除)

csc *.cs现在制作一个自包含的EXE