因為Visual SourceSafe是通過大量修改項目信息,來實現版本信息的標識和管理。不僅在項目目錄中加入新的控制文件;同時他還修改項目方案文件,加入相關XML元素。儘管所有這些改變對用户來説都是透明的,但要去除VSS綁定信息還得小費一番工夫。

日前將版本控制工具由Visual SourceSafe移植到了SubVersion ,但打開項目時,總報告“解決方案看起來是受源代碼管理,但無法找到它的綁定信息。….”。很是討厭。Google了一把,搜到不少解決方案,這裏總結一下算是做個備忘錄吧。

方法一:在代碼中手工解決

1、關閉Visual Studio IDE環境
在Visual Studio IDE 運行過程中,由於共享衝突,這下面步驟是無法操作的,因此首先要關閉IDE環境。
2、去除方案文件中的版本信息
在Visual Studio 2003環境下,方案文件是後綴為.Sln的文本文件。用記事本打開,在其中找到Global塊下的GlobalSection(SourceCodeControl),代碼如下

Microsoft Visual Studio Solution File, Format Version 8.00
Project(”{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”) =
“項目名稱”,
“項目名稱\項目名稱.csproj”,
“{C7687560-4B36-47E3-AF33-748E76411259}”
    ProjectSection(ProjectDependencies) = postProject
    EndProjectSection
EndProject
Global   GlobalSection(SourceCodeControl) = preSolution        SccNumberOfProjects = 2        SccLocalPath0 = .
        CanCheckoutShared = false
        SolutionUniqueID = {634C866F-3CEB-43A1-9C7F-D34A03F0A044}
        SccProjectUniqueName1 =
        項目名稱\\項目名稱.csproj
        SccLocalPath1 = .
        CanCheckoutShared = false
        SccProjectFilePathRelativizedFromConnection1 =
            項目名稱\\
    EndGlobalSection
    GlobalSection(SolutionConfiguration) = preSolution
        Debug = Debug
        Debug = Debug        Release = Release
 
    GlobalSection(ProjectConfiguration) = postSolution
     {C7687560-4B36-47E3-AF33-748E76411259}.Debug.ActiveCfg
        = Debug|.NET
     {C7687560-4B36-47E3-AF33-748E76411259}.Debug.Build.0
        = Debug|.NET
     {C7687560-4B36-47E3-AF33-748E76411259}.Release.ActiveCfg
        = Release|.NET
     {C7687560-4B36-47E3-AF33-748E76411259}.Release.Build.0
        = Release|.NET
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
    EndGlobalSection
    GlobalSection(ExtensibilityAddIns) = postSolution
    EndGlobalSection
EndGlobal

其中GlobalSection(SourceCodeControl)塊包含着VSS綁定信息,刪除該塊並保存。
3、去除項目文件中的版本信息
用記事本打開對應項目,在其中找到XML tag ,刪除SccProjectName、SccLocalPath、SccAuxPath、SccProvider。代碼如下

ProjectType = “Local”
        ProductVersion = “7.10.3077″
        SchemaVersion = “2.0″
         SccProjectName = “SAK”        SccLocalPath = “SAK”        SccAuxPath = “SAK”
        SccProvider = “SAK”
   >
   >                ApplicationIcon = “App.ico”
 
                AssemblyName = “SourceSafeBindingRemover”
                AssemblyOriginatorKeyFile = “”
                DefaultClientScript = “JScript”
                DefaultHTMLPageLayout = “Grid”
                DefaultTargetSchema = “IE50″
                DelaySign = “false”
                OutputType = “WinExe”
                PreBuildEvent = “”
                PostBuildEvent = “”
                RootNamespace = “SourceSafeBindingRemover”
                RunPostBuildEvent = “OnBuildSuccess”
                StartupObject = “”
            >
                    Name = “Debug”
                    AllowUnsafeBlocks = “false”
                    BaseAddress = “285212672″
                    CheckForOverflowUnderflow = “false”
                    ConfigurationOverrideFile = “”
                    DefineConstants = “DEBUG;TRACE”
                    DocumentationFile = “”
                    DebugSymbols = “true”
                    FileAlignment = “4096″
                    IncrementalBuild = “false”
                    NoStdLib = “false”
                    NoWarn = “”
                    Optimize = “false”
                    OutputPath = “bin\Debug\”
                    RegisterForComInterop = “false”
                    RemoveIntegerChecks = “false”
                    TreatWarningsAsErrors = “false”
                    WarningLevel = “4″
                />
… sections deleted

   
注意:如果這是一個VB項目,對應的Tag應該是 。
在Visual Studio 2005中,項目信息變化較大(它基於MSBuild),但要刪除的內容卻是顯而易見的,如下

Debug
    AnyCPU
    8.0.40903
    2.0
    {951EBC65-CA21-4C24-B501-DFF2A03A03F1}
    Library
     SourceSafeBindingRemover
    SourceSafeBindingRemover    SAK
    SAK
    SAK
    SAK


4、刪除所有後綴為.SCC的文件。
最後一步信息,就是刪除項目目錄下所有後綴為.SCC的文件。
其中每一目錄下,都包含有文件vssver.scc
項目文件所在目錄下,包含有文件mssccprj.scc
另外,還包括.csproj.vspscc 或 .etp.vspscc文件

方法二:通過vs.net IDE 來接觸綁定

在IDE裏面File->Source Control->Change Source Control,
上面那排按鈕裏直接unbind就是了.

方法三:使用第三方工具軟件

CodeProject上有一個蠻好用的工具,如果一次性需要接觸綁定的文件很多的話,用這個工具會很方便。推薦!