J'ai un projet que j'essaie de construire. Il utilise des fonctionnalités C # 7.1 et je peux l'exécuter via Visual Studio, mais lorsque j'essaie de publier pour obtenir un fichier .exe, j'obtiens l'erreur:
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]
Le fichier .csproj (projet):
<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>
Je construis avec:
dotnet publish -c Release -r win10-x64 Agent.csproj
Encore une fois, tout cela fonctionne lors du débogage dans Visual Studio. Pourquoi obtenir un simple fichier .exe à partir d'un modèle de projet d'application console est-il si gênant!
Votre problème est que dans la section ...
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<LangVersion>7.1</LangVersion>
</PropertyGroup>
... vous spécifiez d'utiliser C # 7.1 dans la configuration de débogage.
Cependant, avec ...
dotnet publish -c Release -r win10-x64 Agent.csproj
... vous compilez dans la configuration Release.
Vous devez également configurer C # 7.1 dans Release. Vous pouvez également supprimer complètement la condition, qui définit la version linguistique de toute configuration.