TFS 构建输出路径 - OctoPack 无法找到以创建 Nuget 包

TFS build output path - cannot be found by OctoPack to create Nuget package

我有一个相当简单的 class 库,它的输出是一个程序集。 在 TFS 上设置了构建。

我正在使用 Octopack 将其打包为 nuget 包。

在我的 NuSpec 文件中,我指定 <files> 部分如下:

这是为了使OctoPack能够将程序集放在lib文件夹中(否则它只是将它放在包的根目录中,因此不能被其他项目引用)

TFS 构建失败。日志的相关部分如下:

   CopyFilesToOutputDirectory:
     Copying file from "obj\Debug\Company.NameOfAssembly.dll" to "C:\Builds\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.dll".
     Company.NameOfAssembly -> C:\Builds\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.dll
     Copying file from "obj\Debug\Company.NameOfAssembly.pdb" to "C:\Builds\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.pdb".
   OctoPack:
     OctoPack: Get version info from assembly: C:\Builds\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.dll
     Using package version: 1.0.5521.18156
     OctoPack: Written files: 2
     OctoPack: Copy file: C:\Builds\dotNet\Company.NameOfAssembly\src\Company.NameOfAssembly\Company.NameOfAssembly.nuspec
     OctoPack: Files will not be added because the NuSpec file already contains a <files /> section with one or more elements and option OctoPackEnforceAddingFiles was not specified.
     OctoPack: Attempting to build package from 'Company.NameOfAssembly.nuspec'.
 1>MSBUILD : OctoPack error OCTONUGET: Cannot create a package that has no dependencies nor content. [C:\Builds\dotNet\Company.NameOfAssembly\src\Company.NameOfAssembly\Company.NameOfAssembly.csproj]

主要是因为它找不到我的 NuSpec 中指定的 'bin' 文件夹中的文件 - 有没有办法在我的文件 src 中指定 'C:\Builds\dotNet\Company.NameOfAssembly\bin'?

您需要删除该部分并让 OctoPack 完成工作。

P.s。切勿使用 "obj" 文件夹中的文件...

问题似乎出在您的某个文件夹中,这是一个 NuGet 问题,而不是 OctoPack 问题。 workaround suggested here - 使用 NuGet 的 -NoDefaultExcludes 开关对我有用(我最近遇到了同样的问题)。

对于 OctoPack,您可以使用 OctoPackNuGetArguments 参数指定它,参见 here, where -NoDefaultExcludes is even used as an example !

我认为mthierba是对的;尝试利用 OctoPack 提供的一些参数。大多数(如果不是 all)我的 OctoPack 问题实际上是 NuGet 问题。

我还要补充一点,尝试在本地进行构建并根据需要自定义 NuSpec 可能更容易,而不是经历在 TFS 上不断构建并等待最终结果的麻烦。本地 NuSpec 定制可以有效节省时间。