web-dev-qa-db-ja.com

C#7.1は公開できません

ASP.NET Core C#Webアプリケーションがあります。 C#7.1の機能を使用するように変更を加えました。プロジェクトのバージョンを変更したので、コンパイルして正常に動作します。ただし、プロジェクトをpublishしようとすると、エラーが発生します。

機能「デフォルトリテラル」はC#7.0では使用できません。言語バージョン7.1以降を使用してください。

私が見るコンパイルコマンドは次のとおりです:

C:...\.nuget\packages\Microsoft.net.compilers\2.6.1\tools\csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705,1701,1702,2008 /nostdlib+ /errorreport:Prompt /warn:4 /define:TRACE;RELEASE;NETCOREAPP2_0 /errorendlocation /preferreduilang:en-US /warnaserror+:NU1605`

他の場所で提案されているように、Microsoft.Net.Compilers(v2.6.1)をインストールしましたが、違いはありませんでした。

特に公開に影響するVisual Studio設定はありますか?

UPDATE:コンソールアプリケーションにはこの問題がないようです。正常にビルドされた場合、同様に正常に公開されます。ただし、Webアプリケーションは公開しません。 C#7.1機能を備えたASP.NET Core Webアプリケーションの公開に成功した人はいましたか?

30
Felix

<LangVersion>latest</LangVersion>を.pubxmlファイルに追加すると、Visual Studio 2017(私の場合は15.5.2)を公開できるようになりました。

ソース: https://developercommunity.visualstudio.com/solutions/166543/view.html

34
Jeremy Cook

更新:
VS2017をバージョン15.4.5から15.5.2にアップグレードすると、問題を再現でき、エラーが発生します

機能「デフォルトリテラル」はC#7.0では使用できません。言語バージョン7.1以降を使用してください

@ Jeremy Cookからの回答が問題を解決します:
<LangVersion>latest</LangVersion> in .pubxml


古いプロジェクト形式と新しいプロジェクト形式の両方で、プロジェクトファイルのLangVersion要素がこれを担当します。 csproj xmlファイルまたはVisual StudioのUIを使用して変更できます。

この設定はbuild configurationに依存することに注意してください。 C#7.1以降を使用してコードと発行の両方を実行できるようにするには、ビルド構成(DebugReleaseなど)に関係なく、この設定を構成してください。

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

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

</Project>

enter image description here

30
ironstone13

ASP.NET Core 2.0からASP.NET Core 2.1に移行する場合は、回線があることを確認してください

<TargetFramework>netcoreapp2.1</TargetFramework>

.pubxmlファイル内。

0