ビルドしようとしているプロジェクトがあります。 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ファイルを取得するのはなぜ厄介です!
あなたの問題は、セクションにあることです...
<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もセットアップする必要があります。また、条件を完全に削除することもできます。これにより、構成の言語バージョンが設定されます。