我目前正在开发Visual Studio扩展。对于一个新功能,我需要找出一个给定的ProjectItem(文件)是否被修改(自上次提交以来有“Pending Changes”)。为此,我想查询源代码控制提供程序。
我似乎无法在网上找到有关此主题的任何内容。我怎样才能找到修改后的状态?它甚至可能吗?
答案 0 :(得分:1)
在让这个话题搁置一段时间之后,我最近又回到了它,并在我的同事的帮助下找到了解决方案。问题是我没有按位比较的经验,所以我不知道如何正确处理响应。幸运的是,我的同事给了我正确的提示。
解释状态的结果(感谢@ simon-mourier获取有关此代码的帮助):
uint[] sccStatus = new uint[] { 0 };
if (VSConstants.S_OK == manager.GetSccGlyph(1, new[] { filePath }, new[] { VsStateIcon.STATEICON_NOSTATEICON }, sccStatus))
{
__SccStatus status = (__SccStatus)sccStatus[0];
}
必须与您正在寻找的__SccStatus
状态进行按位比较,例如:
if ((sccStatus[0] & (uint)__SccStatus.SCC_STATUS_RESERVED_2) != 0)
return true;
如果设置了状态,则比较返回true
。如果您需要有关具体状态组合的帮助,请在此处发表评论,我可以提供帮助。