【问题标题】:dotnet pack command does not generate .nuget packages for tests and spec projects?dotnet pack 命令不会为测试和规范项目生成 .nuget 包?
【发布时间】:2020-03-20 01:17:12
【问题描述】:

我们有一个包含多个项目的解决方案,其中包括具有单元和规范测试的项目。当我们在解决方案上运行 dotnet pack 命令时,不会为单元和规范测试项目生成包。这是一件好事,它排除了测试项目。只是想了解 dotnet pack 命令如何不将项目排除在打包之外。

在试验过程中,我注意到当我在任何项目上向 xunit 和 xnit.runner.visualstudio 添加项目依赖项时,dotnet pack 不会为该项目生成包。

dotnet 包 C:\Projects\SysScore_Integration\SysScore\SysScore.sln --output C:\Projects\LocalNuGet\ /p:PackageVersion=1.0.1.8

【问题讨论】:

    标签: .net nuget-package


    【解决方案1】:

    将属性 <IsPackable>true</IsPackable> 添加到 .csproj 文件可以解决此问题。

    显然,只要引用 xUnit 就可以将项目视为“测试项目”——即使该项目不包含任何测试。这会干扰例如编写使用或扩展测试框架属性的可重用测试框架的情况。我希望dotnet pack 至少会打印一条警告,解释为什么该命令被忽略,但执行此操作的人显然不同意。

    【讨论】:

    • 我非常不同意你第二段的语气——我建议大多数开发人员的工作流程不需要为测试创建 NuGet 包——我认为这完全是合理的默认值。
    • @JonSkeet 至少打印一条消息,说明为什么忽略该命令?我正在创建一个旨在用于众多项目的测试框架。为了应用 xUnit 属性,它需要引用 xUnit 包。这是它作为“测试项目”的唯一意义。它不包含任何测试方法。
    • 这很有趣 - 对于 nunit,如果您 获得了 NUnit 依赖项(而不是测试适配器等)并且没有明确地将 IsPackable 设置为 False,它 确实生成一个 NuGet 包。它绝对用于警告不可打包的项目。我想知道它在什么时候停止警告......
    • (我仍然会说这是一种相对罕见的情况 - 是的,如果你在其中会很烦人,但是当 90% 的项目依赖时,默认创建一个包也会很烦人在 xunit 或 nunit 上 不需要 需要打包。)
    • (对于以后阅读这些 cmets 的任何人,请注意我的第一条评论是参考修订版 1 的第二段。)
    猜你喜欢
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-24
    • 2022-01-02
    • 2019-03-22
    相关资源
    最近更新 更多