禁止Nuget.exe的警告输出

时间:2016-04-01 19:38:48

标签: nuget octopus-deploy

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

nuget command line documentation提到了一个详细程度标志,但从未真正指定它的有效值。我尝试了以下内容:

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。

3 个答案:

答案 0 :(得分:8)

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

  

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

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

nuget pack myproject.proj -Verbosity quiet -NoPackageAnalysis

答案 1 :(得分:3)

即使使用-nopackageanalysis文件,.nuspec标志也会取消警告。

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

答案 2 :(得分: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