Exemple #1
0
        public async Task <GetStatus> CheckoutWithDTESourceControlProviderAsync(DTE2 dte, ItemSpec itemSpec)
        {
            GetStatus result = ExposedObject.New(typeof(GetStatus));
            var       fails  = new List <Failure>();

            Output.WriteLine("Checkout: {0}", itemSpec.Item);
            var checkOutItem = await Task.Run(() => dte.SourceControl.CheckOutItem(itemSpec.Item));

            if (!checkOutItem)
            {
                fails.Add((Failure)ExposedObject.New(typeof(Failure), "Error for " + itemSpec.Item, SeverityType.Error));
            }
            //if (dte.SourceControl.IsItemUnderSCC(itemSpec.Item))
            //{
            //	Output.WriteLine("Checkout: {0}", itemSpec.Item);
            //	var checkOutItem = await Task.Run(() => dte.SourceControl.CheckOutItem(itemSpec.Item));
            //	if (!checkOutItem)
            //		fails.Add((Failure)ExposedObject.New(typeof(Failure), "Error for " + itemSpec.Item, SeverityType.Error));
            //}
            //else
            //{
            //	string message = $"WARNING '{itemSpec.Item}' is not under SourceControl 0 files checked out";
            //	Output.WriteLine(message);
            //	fails.Add((Failure)ExposedObject.New(typeof(Failure), message, SeverityType.Error));
            //}

            if (fails.Any())
            {
                var fieldInfo = result.GetType().GetField("m_failures", BindingFlags.GetField | BindingFlags.Instance | BindingFlags.NonPublic);
                var failures  = fieldInfo?.GetValue(result) as List <Failure>;
                failures?.AddRange(fails);
            }
            return(result);
        }