カスタムリゾルバーのパラメーターの1つとして取得したResolvePurposeのを確認できるはずです。ResolveInstructionこれらの線に沿った何か:
public void Resolve(IdentifiableObject item, ResolveInstruction instruction, PublishContext context, ISet<ResolvedItem> resolvedItems)
{
    if (instruction.Purpose == ResolvePurpose.Publish || instruction.Purpose == ResolvePurpose.RePublish)
    { 
        // We are publishing
    }
    else if(instruction.Purpose == ResolvePurpose.UnPublish)
    {
        // We are unpublishing
    }
    // Don't know if this one exists in 2009, it exists in 2011 SP1
    else if(instruction.Purpose == ResolvePurpose.UnknownByClient)
    {
        // The server is doing something that I don't understand (yet?)
    }
}
編集
私はこの仕事をする方法を見つけることを拒否しました...
Purpose実際、Tridion 2009では、解決手順についての説明はありません。公開トランザクションにはがありますActionが、これはリゾルバーで直接公開されていません。これが私が公開しているのか非公開しているのかを知る方法です-それがやり過ぎだと思うならあなたの電話ですが、私の非本番VMでのパフォーマンスはかなり良かったです。
- 解決しようとしている現在のアイテムを見つける
 
- 状態が「進行中」のPublishTransactionのリストをロードします
 
- 現在のアイテムのトランザクションを検索します
 
Action属性を見てアクションを決定します 
Filter filter = new Filter();
filter.Conditions["InfoType"] = 2; // Get transactions in Progress
foreach (XmlNode node in item.Session.GetList(typeof(PublishTransaction), filter))
{
    if(node.Attributes["ItemID"].Value.Equals(item.Id.ToString()))
    {
        // we have a winner
        string action;
        if (node.Attributes["Action"].Value.Equals("0"))
            action = "Publish";
        if (node.Attributes["Action"].Value.Equals("1"))
            action = "Unpublish";
    }
}