在Bamboo

时间:2016-06-19 01:11:48

标签: visual-studio msbuild nuget bamboo syncfusion

我一直试图找到一种“优雅”的方式来将非NuGet包与我的Bamboo版本集成。

关于将非NuGet包添加到NuGet包中的主题有很多堆栈:

managing non-nuget dlls along with nuget packages

Creating NuGet package with reference to a non-NuGet reference

Trying to add non-.NET libraries to NuGet package

然后列表继续。还有很多关于在Bamboo中使用NuGet的堆栈,这部分工作顺利。

这些都不涉及拥有自动构建环境的情况,该环境可能位于其他远程服务器上,运行Bamboo。

具体来说,我正在尝试将Xamarin.iOS部署自动化到HockeyApp。

步骤如下:

  1. Windows上的VS2015中的编码和本地测试以及适用于iPhone的模拟器
  2. 合并到部署分支并推送到Bitbucket服务器
  3. Bamboo接受推动并开始构建
  4. 构建检出部署分支
  5. 运行NuGet下载
  6. 开始编译Ad-Hoc / iPhone环境,创建IPA
  7. 启动HockeyApp部署(有一个免费插件)
  8. 几乎所有步骤都已到位,除了我有2个依赖关系,商业供应商(Syncfusion)因未知原因决定捆绑到他们的“Studio”产品,我的Visual Studio项目/解决方案有按项目目录之外的位置引用它们。

    结果,我的Bamboo版本因未找到的DLL而失败,因为它们已经丢失,因为它们必须位于5.和6.之间的某个位置。

    我不想复制二进制文件,然后检查/提交/将它们推入我的存储库,因为这被认为是一件坏事。我的Bamboo Plan已经成功地在实际构建之前抓取了NuGet包,而不必拖动二进制文件。

    只需将DLL复制到Bamboo构建机器(即远程代理程序运行的位置)就是一个想法,但问题是VS / MSBuild项目文件现在有硬连线目录 - 所以,我有安装整个 Syncfusion Studio,或者为这两个DLL模拟它们的目录结构。

    所以我需要以自动方式调整.csproj引用。不知道我会怎么做,除了还有另一个任务和脚本。

    除了大吼大叫Syncfusion(我已经做过)关于通过NuGet使所有他们的DLL可用(因为有些是,以及我在上面的步骤5中成功接收的那些),有没有人建议如何让这个缺失的步骤发挥作用?

1 个答案:

答案 0 :(得分:0)

为了方便起见,我现在已将库添加到存储库中的单独子目录中。

这不是我想要的方式,但由于2个库每个只有200-300KB,因为它们似乎没有一个更简单的解决方案,它现在解决了这个问题。

具体做法是:

  • .gitignore
  • 中留下.dll
  • 将您需要的库复制到本地子目录中,例如LocalLibs/
  • 使用git add -f LocalLibs/speciallib.dll添加特定库,以便只有这些库成为repo的一部分
  • 将Visual Studio中的项目引用更改为指向本地库,而不是其主安装位置
  • 验证构建是否仍在Visual Studio中,但也适用于MSBuild

我可能会重新审视并更新是否有更好的方法,特别是如果库大得多,那么你绝对不希望将它们添加到你的存储库。