我有一个相当简单的类库,其输出是单个程序集。 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'?
答案 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定制是一种有效的节省时间。