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アプリケーションの公開に成功した人はいましたか?
<LangVersion>latest</LangVersion>
を.pubxmlファイルに追加すると、Visual Studio 2017(私の場合は15.5.2)を公開できるようになりました。
ソース: https://developercommunity.visualstudio.com/solutions/166543/view.html
更新:
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以降を使用してコードと発行の両方を実行できるようにするには、ビルド構成(Debug
、Release
など)に関係なく、この設定を構成してください。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<LangVersion>latest</LangVersion>
</PropertyGroup>
</Project>
ASP.NET Core 2.0からASP.NET Core 2.1に移行する場合は、回線があることを確認してください
<TargetFramework>netcoreapp2.1</TargetFramework>
.pubxml
ファイル内。