删除SourceSafe绑定的实用程序?

sha*_*opy 4 visual-sourcesafe utility visual-studio-2008

我正在寻找一个实用程序,它将根据解决方案文件的位置自动删除SourceSafe绑定.我发现了几个这个工具的提及:

http://codebetter.com/blogs/darrell.norton/archive/2008/05/16/sourcesafe-binding-remover.aspx

这看起来就像我需要的那样 - 删除.scc文件并修改.sln和.*proj文件.但是,我无法弄清楚如何实际获得该实用程序 - 该帖子上的附件似乎实际上并不存在.

在我自己重写之前,有没有人拥有这个工具的副本或知道我在哪里可以找到类似的东西?我有137个解除绑定的解决方案,因此手动执行此操作并不是一个有吸引力的选择.

Jer*_*emy 7

我不久前写过这种类型的实用工具,你正在走上正确的道路,需要做些什么.

这里有一些代码可以帮助您入门.它适用于所有.Net项目(VS 2003 - VS 2008),包括部署项目:

//get list of all files to be edited/removed
            SlnFiles = new List<FileInfo>(SelectedDir.GetFiles("*.sln", SearchOption.AllDirectories));
            ProjFiles = new List<FileInfo>(SelectedDir.GetFiles("*.*proj", SearchOption.AllDirectories));
            VssFiles = new List<FileInfo>(SelectedDir.GetFiles("*.vssscc", SearchOption.AllDirectories));
            VssFiles.AddRange(SelectedDir.GetFiles("*.vsscc", SearchOption.AllDirectories));
            VssFiles.AddRange(SelectedDir.GetFiles("*.scc", SearchOption.AllDirectories));
            VssFiles.AddRange(SelectedDir.GetFiles("*.vspscc", SearchOption.AllDirectories));
Run Code Online (Sandbox Code Playgroud)

删除VSS文件

//Delete all vss files
            VssFiles.ForEach(vss =>{vss.Delete();});
Run Code Online (Sandbox Code Playgroud)

编辑sln文件

//Edit sln files 
    SlnFiles.ForEach(sln =>
    {
    string fullName = sln.FullName;
    string relPath = sln.Directory.FullName.Replace(workingDir.FullName, string.Empty);

    StreamReader reader = sln.OpenText();
    String text = reader.ReadToEnd();
    reader.Close();
    string regex = "\tGlobalSection\\(SourceCodeControl\\) [\\s\\S]*? EndGlobalSection\r\n";
    RegexOptions options = ((RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline) | RegexOptions.IgnoreCase);
    Regex reg = new Regex(regex, options);

    text = reg.Replace(text, string.Empty);
        if (text.StartsWith(Environment.NewLine))
            text = text.Remove(0, 2);
        StreamWriter writer = new StreamWriter(fullName);
        writer.Write(text);
        writer.Flush();
        writer.Close();
    });
Run Code Online (Sandbox Code Playgroud)

编辑proj文件

//edit proj files
    ProjFiles.ForEach(proj =>
    {
    string fullName = proj.FullName;
    string relPath = proj.Directory.FullName.Replace(workingDir.FullName, string.Empty);

    StreamReader reader = proj.OpenText();
    String text = reader.ReadToEnd();
    reader.Close();

    string regex = "\"*<*Scc.*?(>|\\W=\\W\").*?(>|\")";
    RegexOptions options = ((RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline) | RegexOptions.IgnoreCase);
    Regex reg = new Regex(regex, options);

    text = reg.Replace(text, string.Empty);
    StreamWriter writer = new StreamWriter(fullName);
    writer.Write(text);
    writer.Flush();
    writer.Close();
    });
Run Code Online (Sandbox Code Playgroud)