希望知道的能给出详细的实现源代码,明天结贴。

解决方案 »

  1.   

    这种要求也有啊...
    一定要对VSS的类进行引用了..
      

  2.   

    我想应该也可以,就像VS.NET一样不是能对VSS直接操作嘛.
      

  3.   

    o??那关注一个
    不解的是 未知lz想用来干吗?
      

  4.   

    引用SourceSafeTypeLib,然后
    /// <summary>
    /// 对VSS里的文件进行签入/签出操作
    /// </summary>
    /// <param name="Username">VSS登陆名</param>
    /// <param name="Password">VSS登陆密码</param>
    /// <param name="SrcSafeIni">VSS数据库路径</param>
    /// <param name="Spec">要操作文件的所在VSS目录路径</param>
    /// <param name="Filename">文件名</param>
    /// <param name="CheckFlag">0:签入 1:签出</param>
    private void VssForCheckInOut(string Username,string Password,string SrcSafeIni,string Spec,string Filename,bool CheckFlag)
    {
    try
    {
    //打开VSS数据库
    VSSDatabaseClass vss = new VSSDatabaseClass();
    vss.Open(SrcSafeIni,Username,Password); //获取指定的项
    VSSItem vssProj=vss.get_VSSItem(Spec,false);
    //获取子项
    IVSSItems childItems = vssProj.get_Items(false); if (childItems != null && childItems.Count > 0)
    {
    foreach(VSSItem childItem in childItems)
    {
    //childItem.Type=0:项目文件夹  childItem.Type=1:项目文件 
    if (childItem.Type==1)
    {
    if(childItem.Name == Filename)
    {
    //签入
    if(CheckFlag == true)
    {
    //childItem.IsCheckedOut=1:被别人签出 childItem.IsCheckedOut=2:被自己签出
    if (childItem.IsCheckedOut==1||childItem.IsCheckedOut==2)
    {
    childItem.Checkin("",childItem.LocalSpec,0);
    }
    }
    //签出
    else
    {
    //childItem.IsCheckedOut=0:未签出
    if (childItem.IsCheckedOut==0)
    {
    childItem.Checkout("",childItem.LocalSpec,0);
    }
    }
    }
    }
    }
    }
    }
    catch(System.Exception ex)
    {
    throw new Exception(ex.Message);
    }
    }