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

时间:2012-01-31 14:11:38

标签: .net visual-studio nuget nuget-package

我已将CI-build中的以下行合并到在每个构建上创建一个私有NuGet包

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

读取AssemblyInfo (包括版本号)并创建NuGet包。
我希望包包含.pdb文件不包含“内容”文件夹(所以只有'lib')。

如何我可以更改命令来执行此操作?

3 个答案:

答案 0 :(得分:13)

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

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

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

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

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

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

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

答案 1 :(得分:1)

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

如果可以将构建操作更改为&#34;无&#34; (或其他任何东西),然后它不会在内容文件夹中结束。

答案 2 :(得分:0)

以下解决方案有效 - 如果您不介意包含源文件。 要忽略内容文件,请将这样一个空节点添加到您的nuspec:

<files>
</files>

然后运行:

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