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

Gen*_*ent 8 c# nuget c#-6.0

我刚刚完成了我的一个项目并使用了一些新的c#6功能,例如handler?.Invoke(null, e)在Visual Studio中构建的null传播运算符.但是,当我运行我的脚本发布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
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*ceg 2

看起来您也在 Nuget 中发现了这个错误,但仍未解决: 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构建包。