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 定制可以有效节省时间。
我有一个相当简单的 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 定制可以有效节省时间。