Appveyor nuget分析

Appveyor nuget analyser

我正在尝试发明将我的 Roslyn 分析器项目打包到 NuGet 中的好方法。 它需要将 .dll 放入 \analyzer\ 而不是 \lib\ 的特定 NuGet 包结构。

为此,我必须调用 nuget pack <name>.nuspec,而不是 nuget pack <name>.csproj。但是如果我使用 nuspec,那么 $version$ 标签就会被忽略。

似乎我唯一的选择是在每次重建时手动更新 .nuspec 中的版本。什么是正确的正确的方法来完成这个?

正确的方法是:

  1. 从 .csproj 调用 nuget pack .nuspec
  2. 传递从程序集提取的版本作为参数。
  3. 重建时使 Appveyor 更新版本
  4. 配置 Appveyor 以将 .nupkg 捕获到工件并将其推送。

示例见https://github.com/leotsarev/hardcode-analyzer

我刚遇到同样的问题。我不喜欢在我的 csproj 文件中添加构建后指令的想法(我不想每次编译时都构建 nuget 包),所以我在 AppVeyor 中配置了一个 "after build script":

nuget pack "yournuspecfile.nuspec" -Version %APPVEYOR_BUILD_VERSION%

nuspec 包含一个虚拟 <version> 标签,实际版本在 nuget pack 命令中使用 %APPVEYOR_BUILD_VERSION% 环境变量指定,即 provided by AppVeyor