NuGet Pack -Build 似乎不理解 c# 6.0
NuGet Pack -Build does not seem to understand c# 6.0
我刚刚完成了我的一个项目并使用了一堆新的 C# 6 功能,例如内置于 Visual Studio 中的空传播运算符 handler?.Invoke(null, e)
。但是,当我 运行 我的脚本发布 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 中也发现了这个错误,但仍未解决:
https://github.com/NuGet/Home/issues/1107
您可以使用以下解决方法:
修改脚本以使用正确版本的 MSBuild 构建项目 - 只需自己调用 MSBuild.exe
,提供 csproj 或 sln 文件的路径并自行以正确的配置构建项目.
创建一个描述您的包的 nuspec 文件 (https://docs.nuget.org/create/nuspec-reference)。您可以使用 Nuget Package Explorer 应用程序。使用步骤 1 中生成的 DLL。
使用nuget pack mypackage.nuspec
构建包。
我刚刚完成了我的一个项目并使用了一堆新的 C# 6 功能,例如内置于 Visual Studio 中的空传播运算符 handler?.Invoke(null, e)
。但是,当我 运行 我的脚本发布 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 中也发现了这个错误,但仍未解决: https://github.com/NuGet/Home/issues/1107
您可以使用以下解决方法:
修改脚本以使用正确版本的 MSBuild 构建项目 - 只需自己调用
MSBuild.exe
,提供 csproj 或 sln 文件的路径并自行以正确的配置构建项目.创建一个描述您的包的 nuspec 文件 (https://docs.nuget.org/create/nuspec-reference)。您可以使用 Nuget Package Explorer 应用程序。使用步骤 1 中生成的 DLL。
使用
nuget pack mypackage.nuspec
构建包。