我正在使用TFS 2010.目前我只在主干(MAIN)分支上使用Gated Check-in构建.而且,我在DEV和RELEASE分支上使用CI.
有人可以帮忙赐教吗?
我去办理了TFS的一些变更,我的办理登机手续被拒绝了.它促使我看一下我编辑过的switch语句.
我发现Visual Studio 2017声称没有编译时间问题,并允许我成功构建和部署应用程序.最重要的是,即使方法的单元测试似乎也按预期传递.
public enum PaymentStatus
{
Issued,
Cleared,
Voided,
Paid,
Requested,
Stopped,
Unknown
}
public class PaymentViewModel
{
public PaymentStatus Status { get; set; }
...
public String StatusString
{
get
{
switch (this.Status)
{
case PaymentStatus.Cleared:
return "Cleared";
case PaymentStatus.Issued:
return "Issued";
case PaymentStatus.Voided:
return "Voided";
case PaymentStatus.Paid:
return "Paid";
case PaymentStatus.Requested:
return "Requested";
case PaymentStatus.Stopped:
return "Stopped";
case PaymentStatus Unknown:
return "Unknown";
default:
throw new InavlidEnumerationException(this.Status);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
因此,请注意"case PaymentStatus Unknown"行缺少'.' 点运算符.如上所述,该项目建立并运行; 但未能使用门控构建服务器签入. …
新的构建系统非常令人兴奋.但...
我想知道是否有任何方法可以使用TFS版本控制创建一个带有门控签入的构建定义,就像它在XAML构建定义中可用一样?
它是隐藏的选项还是很难找到?如果没有,是否有可能制定扩展来做到这一点,还是我们必须等待MS支持它?
我在相应的文件夹中有两个解决方案,例如
SolutionA\SolutionsA.slnSolutionB\SolutionB.sln每个解决方案都配置了Gated Check-in构建; 即两个构建定义GatedSolutionA和GatedSolutionB.
现在的情况是,如果我同时检查两个文件夹中的更改,TFS会显示一个对话框,用于选择构建(使用GatedSolutionA下拉,GatedSolutionB)以针对变更集运行.我的变更集在解决方案B中有突破性变化,在解决方案A中有非破坏性变化.即Build GatedSolutionB将失败,但GatedSolutionA将通过.
当我选择GatedSolutionA来构建我的变更集时,TFS将其检入,这反过来使解决方案B处于中断状态,并且对于解决方案B,Gated签入的目的将被取消.
如果我将触发器更改为CI以进行构建定义,则TFS会对两个构建进行排队.
我正在寻找的是相同的行为,即所有Gated构建都排队,如果其中一个失败,应该拒绝变更集.
注意:我不想为这两个解决方案创建单个构建定义.此外,我知道我们可以通过创建两个单独的更改集来避免此问题发生,但这通常发生在开发人员不知道他们有一些文件正在检入解决方案而不是他们正在处理.
假设我们继续在TFS 2015中使用XAML构建定义进行gated check-ins,因为vNext系统不支持它们,是否仍然可以并行运行多个gated check-ins?
我知道Build setup UI中有一个Parallel选项,但我不知道它是否也可以应用于XAML构建定义,以及还有哪些其他约束.
你可以在同一个盒子上并行构建(只要它支持多个代理)?
我在TFS中使用Workspace.Checkin命令时收到错误,因为我尝试检入的文件是Gated构建定义的一部分.有很多人在询问如何使用TFS API覆盖门控签入.但是一个非常不同的问题是:如果我真的想以编程方式执行门控签入怎么办?如何在TFS API中触发此操作?
我想做的是:
我找不到任何回答这个问题的东西; 也许这是一个边缘情况,我是唯一一个疯狂到想要这样做的人.也就是说,我对此的需求是合法的.我唯一可以想到的是,我需要通过门控签入过程的低级功能:1)遍历构建定义,看看任何文件的路径是否与任何路径重合在任何门控版本中.2)如果存在交集,则创建挂起更改的shelveset 3)使用shelveset对门控定义的新构建进行排队4)查询构建定义并刷新信息,直到构建状态完成为止5)如果构建成功,取消搁置挂起的更改,然后使用覆盖签入.
但请注意,即使我执行了这些步骤,生成的构建也不会像门控构建那样.将发送策略覆盖通知,并且让某人知道实际执行构建的唯一方法是将此类信息包含在策略覆盖注释中.是否有更直接的方法来使它看起来像任何其他门控构建?
我最近从VSS迁移到TFS 2010,我一直非常喜欢它,但是我还没有能够以我认为的方式工作.
GOALS
我想快速了解开发工具的更改何时会破坏构建.如果我们事后发现,这没什么大不了的.由于很多签到都是在一天中发生的,所以我们不想等待构建完成,所以它应该是异步的.
通过我们的主分支,我想确保在合并发生的任何时候,我们确保它不会破坏构建.我想立即得到反馈.等待时间很好,因为我们不会经常合并到Main.
当前设置
我的解决方案位于名为Main的文件夹下.我做了一个名为Development的分支.我正在工作的工作区与顶层相关联,包括Main和Development分支.我尝试调整我的工作区只指向开发,以防出现问题.这似乎没有解决我的问题,所以我把它重新设置为我原来的方式 - 包括Main和Development.
在工作空间的构建定义中,我定义了两个定义 - 一个用于主分支,另一个用于开发.
第一个定义是构建Main分支.它有一个Gated Check-In触发器,"要建立的项目"指向Main中的解决方案文件.
第二个定义是在Development分支中构建解决方案.它有一个Rolling Builds触发器,"Items to Build"指向Development中的解决方案文件.
结果
目前,当在开发中进行更改并执行签入时,将触发对Main的门控签入.这不仅会造成混乱,而且还会减慢我们的整体流程.
下一步
我已经看了一些TFS指南分支,一般TFS使用等等.不幸的是,我还没有找到解决我的问题的方法.如果你以前遇到过这个问题,我会很感激你能给出的任何建议.
我正在使用TFS门控签到.我注意到每次签入javascript文件时,它也会触发构建并浪费大量时间.
如果签入javascript文件(或其他类似文件类型),如何防止构建被触发?