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); }