【问题标题】:Suppress warning output from Nuget.exe禁止 Nuget.exe 的警告输出
【发布时间】:2016-07-21 17:54:19
【问题描述】:

我想知道是否可以在 nuget.exe pack 命令的输出中抑制警告消息?具体消息会很棒,但我可以忍受压制所有消息。

nuget command line documentation 提到了 Verbosity 标志,但从未真正指定其有效值是什么。我尝试了以下方法:

nuget pack mypackage.nuspec -Verbosity Quiet

但似乎什么也没做。

这是我尝试打包的 nuspec 示例:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>MyPackage</id>
        <version>1.0.0</version>
        <authors>Administrator</authors>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>My package description.</description>
    </metadata>
    <files>
        <file src="mysourcepath\foo.dll" target="mytargetpath\foo.dll" />
    </files>
</package>

我收到的警告信息是这样的:

WARNING: 1 issue(s) found with package 'MyPackage'.

Issue: Assembly outside lib folder.
Description: The assembly 'mytargetpath\foo.dll' is not inside the 'lib' folder and hence it won't be added as a reference when the package is installed into a project.
Solution: Move it into the 'lib' folder if it should be referenced.

我正在创建一个 nuget 包,它将通过 Octopus 服务器部署为应用程序。这个 dll 中的程序集不需要被任何东西引用——这个包永远不应该作为构建的一部分被引用(我们有其他更合乎逻辑的包)。

我想取消这个警告,因为我正在创建的实际包有数千个文件,这些文件都不在 lib 文件夹中。这一警告的输出噪音让我很难看到我可能感兴趣的任何其他合法警告。

更新:这个包是从一个自定义的 nuspec 文件打包而来的 - 它包含数百个项目的输出,因此指定一个项目文件不是消除警告的可行选项。 FWIW,指定项目文件确实消除了警告,因为它最终将项目输出放入 lib 文件夹 - 这是我试图避免的。

任何输入的 TIA。

【问题讨论】:

  • FWIW,我知道可以安全地忽略此警告。我的 nuget 包已成功创建,并通过 Octopus 按预期工作。我只是想知道是否可以抑制这种情况,以便在构建过程中减少混乱的输出。

标签: nuget octopus-deploy


【解决方案1】:

您可以将特定属性传递到 NuGet CLI,包括“NoWarn”:

nuget.exe pack package.nuspec -Properties NoWarn=NU5104

https://docs.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-pack#suppressing-pack-warnings

【讨论】:

    【解决方案2】:

    -nopackageanalysis 标志将抑制警告,即使在使用 .nuspec 文件时也是如此。

    如果可以的话,您也可以考虑使用Octopack。 Octopack 旨在为 Octopus Deploy 创建专门的包(即没有 lib 文件夹,没有虚假的警告消息等)。它在后台使用 NuGet,因此您仍然可以将它与 .nuspec 文件一起使用。

    【讨论】:

    • -nopackageanalysis 为我解决了这个问题。当您想要在同一个 nuget 中进行多个项目时,Hovever Octopack 将无法工作,就像 OP 一样。
    【解决方案3】:

    首先,nuget 参考明确指定了Verbosity 的有效值。在您在pack 命令部分下提供的链接中:

    在输出中显示此数量的详细信息:正常、安静、(v2.5) 详细。

    如果可能,尝试打包您的项目文件而不是.nuspec 文件,使用小写的quiet 标志并使用-NoPackageAnalysis

    nuget pack myproject.proj -Verbosity quiet -NoPackageAnalysis
    

    【讨论】:

    • “-Verbosity quiet”选项不会消除警告。此外,与项目一起构建不是一种选择。我正在使用 nuspec,因为我正在打包的文件来自(字面上)数百个项目。我已经用这个细节更新了问题。
    猜你喜欢
    • 1970-01-01
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    相关资源
    最近更新 更多