我一直试图找到一种“优雅”的方式来将非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。
步骤如下:
几乎所有步骤都已到位,除了我有2个依赖关系,商业供应商(Syncfusion)因未知原因决定捆绑到他们的“Studio”产品,我的Visual Studio项目/解决方案有按项目目录之外的位置引用它们。
结果,我的Bamboo版本因未找到的DLL而失败,因为它们已经丢失,因为它们必须位于5.和6.之间的某个位置。
我不想复制二进制文件,然后检查/提交/将它们推入我的存储库,因为这被认为是一件坏事。我的Bamboo Plan已经成功地在实际构建之前抓取了NuGet包,而不必拖动二进制文件。
只需将DLL复制到Bamboo构建机器(即远程代理程序运行的位置)就是一个想法,但问题是VS / MSBuild项目文件现在有硬连线目录 - 所以,我有安装整个 Syncfusion Studio,或者为这两个DLL模拟它们的目录结构。
所以我需要以自动方式调整.csproj引用。不知道我会怎么做,除了还有另一个任务和脚本。
除了大吼大叫Syncfusion(我已经做过)关于通过NuGet使所有他们的DLL可用(因为有些是,以及我在上面的步骤5中成功接收的那些),有没有人建议如何让这个缺失的步骤发挥作用?
答案 0 :(得分:0)
为了方便起见,我现在已将库添加到存储库中的单独子目录中。
这不是我想要的方式,但由于2个库每个只有200-300KB,因为它们似乎没有一个更简单的解决方案,它现在解决了这个问题。
具体做法是:
.gitignore
LocalLibs/
git add -f LocalLibs/speciallib.dll
添加特定库,以便只有这些库成为repo的一部分我可能会重新审视并更新是否有更好的方法,特别是如果库大得多,那么你绝对不希望将它们添加到你的存储库。