【发布时间】:2015-02-12 10:14:23
【问题描述】:
我有一个相当简单的类库,它的输出是一个程序集。 在 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'?
【问题讨论】:
-
如果您使用的是最新版本的 TFS,您可以尝试将模板构建部分中的输出位置设置为 AsConfigured。这将禁用在 MSbuild 命令行上覆盖 OutDir 的模板的行为,以便它像在 VS 或普通命令行中那样构建。然后,您可以添加一个构建后脚本,将您想要的内容从它们在 TB_BUILD_SOURCESDIRECTORY 下的位置复制到 TF_BUILD_BINARIESDIRECTORY 以便它们被删除。
-
@Alex 我也有同样的问题。如果您找到了解决方案,可以分享一下吗?
-
@Baga 这是 9 个月前,我不再从事这个项目,我不记得它被修复了。不过,下面最有可能的答案是
-
@Alex Ok 会试试的,谢谢!
标签: tfs nuget nuget-package octopus-deploy