禁止从Nuget.exe输出警告



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

nuget命令行文档提到了Verbose标志,但从未真正指定其有效值。我试过以下几种:

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="mysourcepathfoo.dll" target="mytargetpathfoo.dll" />
    </files>
</package>

我收到的警告信息是:

WARNING: 1 issue(s) found with package 'MyPackage'.
Issue: Assembly outside lib folder.
Description: The assembly 'mytargetpathfoo.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包,它将作为应用程序通过八达通服务器进行部署。这个dll中的程序集不需要被任何东西引用-这个包永远不应该作为生成的一部分被引用(我们有其他更符合逻辑的包)。

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

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

TIA用于任何输入。

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

在输出中显示此数量的详细信息:normal、quiet、(v2.5)detailed。

如果可能的话,试着打包你的项目文件而不是.nuspec文件,quiet标志使用小写字母,并使用-NoPackageAnalysis:

nuget pack myproject.proj -Verbosity quiet -NoPackageAnalysis

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

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

您可以将特定属性传递到NuGet CLI中,包括;无警告":

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

https://learn.microsoft.com/en-us/nuget/reference/cli-reference/cli-ref-pack#suppressing-包装警告

最新更新