2017-09-07 17 views
9

Mam projekt, który próbuję zbudować. Jest przy użyciu C# 7.1 funkcje, można go uruchomić za pomocą Visual Studio, ale gdy próbuję opublikować uzyskać .exe pojawia się błądKompilacja DotNet Core 2.0 Exe z C# 7.1

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> 

Buduję z

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

znowu, to wszystko działa podczas debugowania w VS. Dlaczego otrzymanie prostego pliku .exe z szablonu projektu ConsoleApplication jest tak niezręczne!

Odpowiedz

19

Twoim problemem jest to, że w sekcji ...

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

... podasz używać C# 7.1 w konfiguracji Debug.

jednak z ...

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

... kompilacji w konfiguracji Release.

Należy również ustawić C# 7.1 w wersji. Można również całkowicie usunąć warunek, który konfiguruje wersję językową dla dowolnej konfiguracji.

+0

Dziękuję za to! – Stuart

+0

@Stuart: Moja przyjemność. – Sefe

+1

@Stuart Czy istnieje jakiś szczególny powód, aby ustawić to oddzielnie dla debugowania i wydania? Można go również ustawić w pierwszej sekcji 'PropertyGroup' dla wszystkich konfiguracji. –