Chr*_*Fin 3 msbuild tfs tfsbuild nuget nuget-package
我正在尝试使用我们的TFS 2013构建创建一个NuGet包.我基本上按照这个步骤,在当地一切正常.
但我们的构建不使用默认输出目录,这似乎使nuget pack命令崩溃.
在我的本地机器上,所有内容都被SOLUTION/PROJECT/bin/Release构建,但TFS Build BUILD/Sources/SOLUTION/PROJECT用于源和BUILD/Binaries/Release输出目录.运行构建我得到以下日志/错误:
BuildPackage:
"D:\ BUILD\Sources\SOLUTION\.nuget\NuGet.exe"pack"D:\ BUILD\Sources\SOLUTION\PROJECT\PROJECT.csproj"-Properties"Configuration = Release; Platform = AnyCPU"-NonInteractive - OutputDirectory"D:\ BUILD\Binaries\Release"-symbols -NoPackageAnalysis -BasePath"D:\ BUILD\Binaries\Release"尝试从'PROJECT.csproj'构建包.D:\ BUILD\Sources\SOLUTION\.nuget\NuGet.targets(133,5):错误:无法找到'D:\ BUILD\Sources\SOLUTION\PROJECT\bin\Release\PROJECT.dll'.确保项目已构建完成.
然后我添加-BasePath "$(TargetDir)"到了BuildCommandin NuGet.targets,但仍然没有变化:
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols -NoPackageAnalysis -BasePath "$(TargetDir)"</BuildCommand>
Run Code Online (Sandbox Code Playgroud)
如何告诉NuGet使用TFS加载正确的文件?
更新:
我找到了一个解决方法:如果我将项目的构建输出路径设置为我们的TFS构建所使用的相同"相对路径",那么它可以工作......
但这不是解决方案,对吧?
我在自己的TFS版本中遇到了与你完全相同的问题.问题是,当NuGet pack使用csproj文件调用时,它实际上将其评估csproj为MSBUILD文件,并将默认的OutDirMSBUILD属性设置为{ProjectDir}\bin\{ConfigurationName}.
但是使用TFS构建时,输出目录通常设置为临时位置,例如BUILD/Binaries/Release在您的情况下.
你缺少的是这个OutDir属性NuGet pack,这是一个适合你的例子:
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform);OutDir=$(OutDir)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols -NoPackageAnalysis -BasePath "$(TargetDir)"</BuildCommand>
有了这个额外的OutDir属性,NuGet应该能够找到你新建的二进制文件并将它们添加到包中.
| 归档时间: |
|
| 查看次数: |
3114 次 |
| 最近记录: |