NuGet Pack -Build似乎不理解c# 6.0

本文关键字:不理解 Pack -Build NuGet | 更新日期: 2023-09-27 17:49:15

我刚刚完成了我的一个项目,使用了一堆c# 6的新特性,比如null传播运算符handler?.Invoke(null, e),它是在Visual Studio中构建的。然而,当我运行脚本发布NuGet包时,我得到编译错误:

EventName.cs(14,66): error CS1056: Unexpected character '$'
EventName.cs(69,68): error CS1519: Invalid token '=' in class, struct, or interface member declaration
EventName.cs(69,74): error CS1520: Method must have a return type

看起来NuGet使用的是旧版本的编译器,但我想知道是否有人知道可以设置解决问题的工作或配置。

NuGet Pack -Build似乎不理解c# 6.0

看起来你也在Nuget中发现了这个bug,但仍然没有解决:https://github.com/NuGet/Home/issues/1107

您可以使用以下解决方案:

  1. 修改脚本,使用正确版本的MSBuild构建项目-只需自己调用MSBuild.exe,提供路径到csproj或sln文件,并在正确的配置中自己构建项目。

  2. 创建一个描述包的nuspec文件(https://docs.nuget.org/create/nuspec-reference)。你可以使用Nuget Package Explorer应用程序。使用步骤1中生成的dll。

  3. 使用nuget pack mypackage.nuspec构建包