【问题标题】:Error: must declare a body because it is not marked abstract or extern错误:必须声明一个主体,因为它没有标记为抽象或外部
【发布时间】:2018-12-18 15:18:45
【问题描述】:

在 Win10 上使用 csc.exe 进行编译时,在清除此错误时遇到了一点问题。我对 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' 必须声明一个主体,因为它没有标记为抽象或外部

代码 入侵者.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>

【问题讨论】:

  • 我认为,您的问题是早期版本的编译器不支持自动属性
  • 我认为对于 .NET Core 项目,您应该使用 dotnet build 命令。或者只使用 VSCode 中的 Build 命令。
  • @itsme86 msbuild 也可以使用
  • 当你只运行“csc”时,它会显示什么版本号?
  • @itsme86 dotnet build 正在编译它,但它没有生成 exe。还刚刚发现 dotnet publish 它正在创建超过 200 个文件,而不是像 csc 这样的自包含 exe 文件

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。这使我找到了一堆我没有找到的新文章。发布了一个我能够开始工作的解决方案。
【解决方案2】:

我要感谢大家为此提供的帮助。它让我指向了一个好的方向。一直在做更多的阅读,并发现这是一个解决方案。以下方法是我发现可以制作自包含EXE的最简单方法。我无法让dotnet builddotnet publishmsbuild 工作。还有很多东西要学。

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

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

csc *.cs 现在制作一个独立的 EXE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    相关资源
    最近更新 更多