2016-04-01 85 views
4

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

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包,这将是通过八达通服务器部署为应用程序。在这个dll中的程序集不需要被任何东西引用 - 这个包不应该被引用作为构建的一部分(我们还有其他更多的逻辑包)。

我想压制这个警告,因为我正在创建的实际包有成千上万的文件,其中没有一个在lib文件夹中。从这一警告的输出噪声使其难以看到任何其他合法警告我可能有兴趣在

UPDATE:这个包是从一个自定义nuspec文件打包 - 它由数百个项目的输出。 ,因此指定一个项目文件对于消除警告不是一个可行的选项。 FWIW,指定一个项目文件确实消除了警告,因为它最终将项目输出放到一个lib文件夹 - 这正是我想要避免的。

TIA用于任何输入。

+0

FWIW,我得到这个警告可以安全地忽略。我的nuget软件包已成功创建,并通过八达通按预期工作。我只是想知道我是否可以抑制这一点,这样我在构建过程中输出的混乱就少了。 – wbj

回答

6

首先,参考的NuGet明确规定什么样的有效值是Verbosity。在你下命令pack部分中提供的链接:

显示此量的输出的详细说明:正常,安静,(v2.5)详细。

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

nuget pack myproject.proj -Verbosity quiet -NoPackageAnalysis 
+2

“-Verbosity quiet”选项不会消除警告。另外,建设项目不是一种选择。我使用的是nuspec,因为我打包的文件来自(从字面上)数百个项目。我已经用这个细节更新了问题。 – wbj

2

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

你也可以考虑使用Octopack,如果它是一个选项。 Octopack被设计为专门为Octopus Deploy创建软件包(即没有lib文件夹,没有虚假的警告消息等)。它使用NuGet引擎,所以你仍然可以使用.nuspec文件。

+1

-nopackageanalysis为我解决了它。 当你想在同一个nuget中的多个项目,像OP一样,Hovever Octopack不会工作。 –