我们有很多相互依赖的构建(例如构建A必须在构建B之前运行,因为构建B引用了构建A中创建的.dll),所以在每个版本的源设置中,我们对生成代理文件夹进行了硬编码。它不能是默认的$(SystemDrive)\ Builds \ $(BuildAgentId)\ $(BuildDefinitionPath),因为然后后续的版本不知道从哪里获得源代码。但现在我已经设置了CI构建和我经常收到错误:TFS 2013 build源设置全部共享相同的目录,这就是生成错误
Exception Message: Unable to create the workspace '106_33_pgbuildorig' due to
a mapping conflict. You may need to manually delete an old workspace.
我最初尝试设置CI构建使用不同的文件夹,但事实证明,我们需要他们在同样的文件夹也是如此,因为我们希望在后续其他版本中获取来自CI构建的最新输出。
任何想法,我可以避免必须手动删除Team Build创建的工作空间吗?
其实我不知道这些构建最初是如何工作的(我刚开始在这里工作),因为它看起来像对源代码设置进行硬编码会导致重叠创建工作区,并且无论如何会在其下一次运行时失败。
谢谢丹尼尔。我知道这不是一个好的情况,但正如我刚才说的,我刚从这里开始,所以需要一段时间才能清理干净。我甚至无法弄清楚为了让他们工作而创建什么命令。有大约215个解决方案文件,在12个左右的构建中引用了25个左右的解决方案文件,但几乎每个解决方案都包含对其他.csproj文件或从其他构建生成的.dll的引用。 –
只是好奇的丹尼尔 - 在这种情况下NuGet包会如何帮助?我对NuGet的唯一体验是第三方附加组件。 –
@Ben_G您的组件可以单独构建并发布到NuGet源,然后由每个相关应用程序引用并在构建期间恢复。在某种程度上,它只是形式化你当前正在做的事情 - 二进制文件被创建和发布,因此它们可以被需要它们的其他应用程序引用。不同之处在于,NuGet包是版本化的,可以根据需要从已知的位置进行恢复。 –