小编Siy*_*ams的帖子

我可以从我的msbuild脚本中取消TeamCity构建吗?

TeamCity允许我使用## teamcity交互从我的MsBuild脚本报告.我可以使用它来告诉TeamCity构建已经失败,或者确实已经成功,但是我想告诉它取消构建.有谁知道这样做的方法?

我可以用它来告知TeamCity失败......

<Message Text="##teamcity[buildStatus status='FAILURE']" Condition="Something==SomeCondition" />
Run Code Online (Sandbox Code Playgroud)

我很乐意这样做......

<Message Text="##teamcity[buildStatus status='CANCEL']" Condition="Something==SomeCondition" />
Run Code Online (Sandbox Code Playgroud)

我已经尝试过TeamCity服务任务,但到目前为止还没有.

编辑:

因此,虽然可以使用解决方法http请求取消构建,但似乎此功能不可用.还有一个功能请求取消构建TC网站.如果这是你想要的东西(或者想帮助我吗?)那么投票吧!

干杯

msbuild teamcity

10
推荐指数
1
解决办法
1947
查看次数

即使无法构造对象,也会调用本地事件侦听器

在对象的构造函数中Listener,我们接受一个参数并订阅其中一个事件.如果在订阅事件后在构造函数中抛出异常,则在引发事件OnSomethingChanged()时仍会调用该方法 - 即使对象未成功构造,并且据我所知,没有实例存在.

现在我可以通过显着地重新设计设计来解决这个问题,但是我更感兴趣的是为什么即使构造函数没有成功完成也会调用实例方法?如果该方法使用在异常之前尚未初始化的任何局部变量,那么显然它会变为BOOM!

class Program
{
    static void Main(string[] args)
    {
        Input input = new Input();

        try
        {
            new Listener(input);
        }
        catch (InvalidOperationException)
        {
            // swallow
        }

        input.ChangeSomething(); // prints "Something changed!"
    }
}

public class Listener
{
    public Listener(Input input)
    {
        input.SomethingChanged += OnSomethingChanged; // subscibe

        throw new InvalidOperationException(); // do not let constructor succeed
    }

    void OnSomethingChanged(object sender, EventArgs e)
    {
        Console.WriteLine("Something changed!");
    }
}

public class Input
{
    public event EventHandler SomethingChanged; …
Run Code Online (Sandbox Code Playgroud)

.net c# constructor exception event-handling

8
推荐指数
1
解决办法
182
查看次数

标签 统计

.net ×1

c# ×1

constructor ×1

event-handling ×1

exception ×1

msbuild ×1

teamcity ×1