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

时间:2015-02-12 10:14:23

标签: tfs nuget nuget-package octopus-deploy

我有一个相当简单的类库,其输出是单个程序集。 TFS上有一个构建版本。

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

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

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

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

   CopyFilesToOutputDirectory:
     Copying file from "obj\Debug\Company.NameOfAssembly.dll" to "C:\Builds\4\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.dll".
     Company.NameOfAssembly -> C:\Builds\4\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.dll
     Copying file from "obj\Debug\Company.NameOfAssembly.pdb" to "C:\Builds\4\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.pdb".
   OctoPack:
     OctoPack: Get version info from assembly: C:\Builds\4\dotNet\Company.NameOfAssembly\bin\Company.NameOfAssembly.dll
     Using package version: 1.0.5521.18156
     OctoPack: Written files: 2
     OctoPack: Copy file: C:\Builds\4\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\4\dotNet\Company.NameOfAssembly\src\Company.NameOfAssembly\Company.NameOfAssembly.csproj]

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

3 个答案:

答案 0 :(得分:2)

问题似乎是你的一个文件夹中的点,它是一个NuGet问题而不是OctoPack问题。 workaround suggested here - 使用NuGet的-NoDefaultExcludes开关适用于我(我最近遇到了同样的问题)。

使用OctoPack,您可以使用OctoPackNuGetArguments参数指定它,请参阅here, where -NoDefaultExcludes is even used as an example

答案 1 :(得分:1)

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

P.S。永远不要使用&#34; obj&#34;文件夹...

答案 2 :(得分:0)

我认为mthierba是正确的;尝试利用OctoPack提供的一些参数。我的OctoPack问题中的大多数(如果不是所有)都是NuGet问题。

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