NuGet:包含.pdb文件并排除"Content"文件夹

Dav*_*vid 8 .net visual-studio nuget nuget-package

我在CI-build中添加了以下行,以在每个构建上创建一个私有NuGet包:

nuget pack C:\Projects\Test\Test.vbproj -OutputDirectory \\nas1\NuGet 
Run Code Online (Sandbox Code Playgroud)

所述集信息被读出(包括版本号),并且创建NuGet包.
我希望包中包含.pdb文件,而不包含"Content"文件夹(所以只包含'lib').

如何我可以改变命令这样做呢?

bra*_*c10 13

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

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

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

要包含调试文件,请在规范中添加以下内容:

  <files>
    <file src="bin\*.pdb" target="lib\net35\" />    
  </files>
Run Code Online (Sandbox Code Playgroud)

但这会告诉工具你确实有内容,然后它会添加所有其他文件.或许,您可以为您的项目制作符号包.

另一种选择是仅从spec(nuget pack Test.nuspec)构建,并准确指定要包含的文件.它更耗时,但它可以让您完全控制包的内容.

  • 在考虑了这个之后,我想在技术上可以通过命令行执行此操作,方法是将.pdb包含在规范中(如上所述),然后使用-Exclude标志来省略您不想要的文件类型.但是您必须排除_every_单个文件类型,它不是将包含在"内容"中的dll或pdb,这对您来说可能适用也可能不实用.例如,这将从包中排除config,xml和transform文件(并包括pdb文件,因为它们是在.nuspec中设置的):`nuget pack -Exclude**\*.config;**\*. XML;**\*transform` (4认同)
  • +1用于删除带有空```<files \>```节点的内容文件夹. (2认同)