2012-01-31 109 views
8

我已经纳入下面一行在CI-建立以创建一个私有的NuGet包每个建设的NuGet:包括.pdb文件,并排除“内容”文件夹

nuget pack C:\Projects\Test\Test.vbproj -OutputDirectory \\nas1\NuGet 

集信息被读取为(包括版本号),并创建一个NuGet包。
我想包包括.pdb文件不包含“内容”文件夹(所以只有'lib')。

如何我可以更改命令做到这一点?

回答

10

不幸的是,我不认为你可以同时排除内容文件包括.pdb文件,同时通过项目打包。你可以做一个或另一个。

首先,制作一个nuspec文件(nuget spec命令使此快速)并将它放在与您的项目相同的位置。当您打包项目时,NuGet.exe会将该规范视为您项目信息的补充。

要消除内容文件夹,打包同样具有.nuspec文件的项目时,规范中的空节点<files />将指示不需要任何内容​​文件,即使它们存在于项目中也是如此。

包括调试文件,添加这样的事情您规格:

<files> 
    <file src="bin\*.pdb" target="lib\net35\" />  
    </files> 

但会告诉工具,你有内容,然后它会添加所有其他文件,以及。相反,您可以为您的项目制作一个symbol package

另一种选择是从规范(nuget pack Test.nuspec)中完全构建,并准确指定要包含的文件。它比较耗时,但它可以让你完全控制包裹的内容。

+3

给这一些更多的思考之后,我想这是技术上可以通过命令来做到这一点通过在规范中包含.pdb(如上所述),然后使用-Exclude标志来省略不需要的文件类型。但是你必须排除_every_单个文件类型,它不是包含在“内容”中的dll或pdb,这对你来说可能并不实际。 例如,这将从软件包中排除config,xml和变换文件(并包括pdb文件,因为它们设置在.nuspec中): 'nuget pack -Exclude ** \ *。config; * * \ *。xml; ** \ *。transform' – brainiac10 2012-02-03 17:15:21

+0

+1用于消除带有空的''''节点的内容文件夹。 – 2013-05-23 14:24:09

1

在您不想打包的内容文件上,是否需要它们在项目中具有“内容”构建操作(在Visual Studio文件的属性窗口中,如果这是您的IDE )?

如果将构建操作更改为“无”(或其他任何内容)是可以接受的,则它不会在内容文件夹中结束。

0

以下解决方案的工作原理 - 如果您不介意也包括源文件。 忽略的内容文件添加例如空节点您nuspec:

<files> 
</files> 

然后运行:

nuget pack C:\Projects\Test\Test.vbproj -Symbols 
nuget push *.symbols.nupkg -Source \\nas1\NuGet 
+0

空的解决方案不再适用于我。 – 2016-11-18 15:26:50

相关问题