gpt4 book ai didi

teamcity - 如何使用 TeamCity 在不同项目中包含来自另一个项目的 DLL

转载 作者:行者123 更新时间:2023-12-04 06:04:16 24 4
gpt4 key购买 nike

我们有几个项目,它们相互依赖。例如,我们有依赖于项目 foo 的项目 bar。 foo 项目是一个 SDK(基础库),我们希望将其包含在所有其他项目中,因为我们发现我们正在一遍又一遍地解决相同类型的问题。

目前项目 foo 和 bar 是独立构建的,并且 bar 项目有一个对 foo.dll 的引用,它存储在 SVN 的 bar\lib 文件夹中。因此,如果我们对 foo 项目进行任何更改,那么我们必须采用最新版本,检查 bar 项目并复制新的 DLL 并再次提交。这是一个有点手动和烦人。特别是因为我们现在有大约 3 或 4 个项目依赖于 foo 库。

我不想把所有东西都放在一个解决方案中,因为这看起来有点愚蠢。 foo 项目不应该经常更改并提供一个 SDK。它们彼此没有关系。我们已经在解决方案中将相关项目放在一起。我们已经有了一些解决方案,其中包含 4-5 个带有测试项目的项目。将所有内容结合在一起将创建一个包含 40-50 个项目的解决方案,这似乎是一场噩梦。

我想通过 TeamCity 实现的是,如果对 Foo 进行任何更改,它会使用更新的 Foo DLL 自动触发新的 bar 构建。这样,如果有人做出重大更改,我们会立即发现。然后罪魁祸首要么修复他的错误提交,要么在所有依赖项目中进行必要的更改。

到目前为止,我们已经在 TeamCity 中构建了大部分解决方案,运行单元测试并创建工件。我试图在 foo 构建的 bar 构建配置中设置工件依赖项。这应该将 foo\build\release\foo.dll 复制到 bar\lib\foo.dll。我们现在收到错误说明

Failed to resolve artifact dependency xxx ... java.io.FileNotFoundException ... Access Denied

做我们正在尝试的事情的最佳实践是什么?我们走的是正确的道路吗?如果我们以正确的方式执行此操作,我们如何解决此错误?

最佳答案

您可以使用 SVN 外部组件从一个中心位置在项目之间共享程序集。

在构建结束时,我们总是在 SVN 中标记输出并替换 的内容。最新 包含最新构建输出的文件夹,例如

_output\v1.2.3\

_output\v1.2.4\

_output\latest\

所以 latest将包含与 v1.2.4 相同的内容文件夹。因此,在开发中,我们始终将项目依赖项定位到最新文件夹,因此无论何时 check out 项目,它都会加载最新的成功构建程序集。

通过这种方式,我们可以在 TeamCity 中链接构建配置,以便使用您的示例,在成功构建 FOO 后立即构建 BAR;并且因为它从最新文件夹中 check out FOO 程序集,所以 BAR 项目是使用最新更改构建的。

这就是持续集成,而不仅仅是构建过程的原因。

为任何错别字道歉。我在上网本上的一个小露营车里; key 很小,肘部空间不大!

关于teamcity - 如何使用 TeamCity 在不同项目中包含来自另一个项目的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8559170/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com