相关疑难解决方法(0)

在构建期间无法自动将NuGet包更新到最新版本

我们有两个独立的.NET解决方案:

  • 运行第一个解决方案的构建产生我们的最终产品:一堆DLL.这些DLL通过NuGet包提供给我们的客户.
  • 第二个解决方案用作产品测试解决方案:NuGet包安装在其上,并且构建和执行 - 因此它使用我们的产品与客户的方式完全相同.

这里面临的挑战是,应该有一种方式将我们最新的NuGet软件包自动安装到产品测试解决方案中,最好是在构建此产品测试解决方案期间.

基于类似问题的想法,我在配置产品测试解决方案方面做到了这一点:

  • 首先我启用了NuGet Package Restore.这使我可以完全从VCS中删除"packages"目录,因为在build.config文件中定义的版本的包将在构建之前由NuGet自动下载.
  • 然后我在Visual Studio中添加了以下预构建事件:$(SolutionDir).nuget\nuget update -prerelease $(ProjectDir)packages.config.这让我可以在构建期间引入最新版本的NuGet包.

我目前使用上面的场景使用Visual Studio运行本地构建,使用TeamCity运行无人参与的构建.该解决方案似乎第一眼就适用于这两种情况,但实际上它并没有产生预期的结果:当构建产品测试解决方案时,在bin目录中我没有获得最新版本的DLL,只有最新版本-1版本.

问题是虽然nuget update命令按预期更新了所有内容,包括文件packages.config.csproj文件,但它们的新内容不会被构建选中,因此 - 正如我的猜测 - 文件中的HintPath设置.csproj仍然反映了"构建前"状态因此旧的DLL被复制到bin目录中.我假设.csproj文件只处理一次:在触发预构建事件之前,预构建事件所做的更改将被忽略,直到下一次构建.

我考虑了以下解决方案:

  • 显然,预构建不够"预先".如果有一个更早的点我可以插入nuget update命令,我的上述解决方案可能会工作.
  • 我读到我可以通过定义ReferencePath来覆盖.csproj文件中的HintPath-s.但是我怀疑我能否轻松找出正确的路径,或者我可以尽早设置它以便构建能够找到它.
  • 作为一种解决方法,我可以运行构建两次:在TeamCity中复制产品测试解决方案的构建步骤,我总是可以在Visual Studio中本地构建解决方案两次.

有人想出如何在构建期间自动将NuGet包更新到最新版本?

teamcity build visual-studio nuget

15
推荐指数
2
解决办法
1万
查看次数

如何在硒中自动更新 chromeDriver 和 geckDriver

我在多个节点机器上设置了 selenium 网格,其中我在所有 selenium 节点机器上手动下载 chromeDriver 和 geckoDriver,并将它们分别用于 chrome 和 firefox 浏览器。

现在这里的 chrome 和 firefox 浏览器(在所有 selenium 节点机器上)设置为“自动更新”(这是必需的,因为我希望我的应用程序始终在最新的浏览器版本上进行测试),因为我的节点机器上的浏览器不断更新更常见的是,因为相应的驱动程序更新是一个手动过程,它迫使我登录到每个 selenium 节点机器并手动更新它们

这个过程可以自动化吗?

PS:我知道 dockerized selenium grid 可用于获取/拉取最新的浏览器图像及其驱动程序,但是从传统 selenium grid 切换到 dockerized selenium grid 是另一回事,需要一些时间来实现。

selenium selenium-grid selenium-chromedriver geckodriver

9
推荐指数
2
解决办法
1万
查看次数