web-dev-qa-db-ja.com

C#7.1で.NET Core 2.0 EXEファイルをビルドする

ビルドしようとしているプロジェクトがあります。 C#7.1の機能を使用しており、Visual Studioで実行できますが、.exeファイルを取得するために発行しようとするとエラーが発生します。

Agent.cs(8,30): error CS8107: Feature 'async main' is not available in C# 7.
Please use language version 7.1 or greater. [C:\Users\stuarts\Documents\Visual
Studio 2017\Projects\Agent\Agent\Agent.csproj]
CSC : error CS5001: Program does not contain a static 'Main' method suitable
for an entry point [C:\Users\stuarts\Documents\Visual Studio
2017\Projects\Agent\Agent\Agent.csproj]

.csproj(プロジェクト)ファイル:

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

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
    <IsPackable>false</IsPackable>
    <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
    <RuntimeFrameworkVersion>2.0.0-*</RuntimeFrameworkVersion>
    <RuntimeIdentifier>win10-x64</RuntimeIdentifier>
    <ApplicationIcon />
    <StartupObject />
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <LangVersion>7.1</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="RabbitMQ.Client" Version="5.0.1" />
  </ItemGroup>

</Project>

私はで構築しています:

dotnet publish -c Release -r win10-x64 Agent.csproj

繰り返しますが、これはすべてVisual Studioでデバッグするときに機能します。コンソールアプリケーションプロジェクトテンプレートから単純な.exeファイルを取得するのはなぜ厄介です!

22
Stuart

あなたの問題は、セクションにあることです...

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
    <LangVersion>7.1</LangVersion>
</PropertyGroup>

...デバッグ構成でC#7.1を使用するように指定します。

しかし、と...

dotnet publish -c Release -r win10-x64 Agent.csproj

...リリース構成でコンパイルします。

リリースではC#7.1もセットアップする必要があります。また、条件を完全に削除することもできます。これにより、構成の言語バージョンが設定されます。

41
Sefe