从 Visual Studio 扩展中找出 ProjectItem 的源代码控制状态

Find out the source control state of a ProjectItem from a Visual Studio extension

我目前正在开发 Visual Studio 扩展。对于新功能,我需要查明给定的 ProjectItem(文件)是否已修改(自上次提交以来已 "Pending Changes")。为此,我想查询源代码管理提供程序。

我似乎无法在网上找到有关此主题的任何信息。我怎样才能找到修改后的状态?有可能吗?

让这个话题搁置一段时间后,我最近又回到了这个话题,并在同事的帮助下找到了解决方案。问题是我没有按位比较的经验,所以我不知道如何正确处理响应。幸运的是我的同事给了我正确的建议。

解释状态结果(感谢@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;

比较returns true 情况下的状态是否设置。如果您需要帮助了解特定状态组合的含义,请在此处发表评论,我可以提供帮助。