December 2015 Blog Posts

VS清除打开项目时的TFS版本控制提示

MitchellChu 2015-12-15 .NET技术 其他技术

对于曾经做过TFS版本控制的项目,在版本控制服务不可用的时候,依然会在每次打开项目的时候都提示:当前项目是版本控制的项目,但是当前版本控制不可用,balabala的信息,如果是需要进行版本控制的项目在临时无法连接到版本控制服务器的时候出现这个提示,也属于正常的,但是如果是不再需要进行版本控制的项目,还这么次次打开都这么提示,就有些受不了——关键是,没有,只能想办法删除了。

TFS版本控制提示

TFS提示信息

在项目中要永久清除TFS版本控制,需要操作三步(请确保操作之前没有在使用当前项目):

  1. 清除(删除)项目下的所有版本控制文件,这些文件有:*.vssscc,*.vspscc

    删除这些版本控制文件比较简单,搜索这些后缀的文件,删除即可;

  2. 修改项目的解决方案文件:*.sln

    先要确认解决方案文件(*.sln)是可修改的,如果是Read-Only的文件,则需要先调整为可修改。
    切勿使用打开文件,使用文本编辑器打开*.sln文件,在文件中,我们将能看到类似下面的代码:

     GlobalSection(TeamFoundationVersionControl) = preSolution
            SccNumberOfProjects = 4
            SccEnterpriseProvider = {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
            SccTeamFoundationServer = here is your project's tfs
            SccLocalPath0 = .
            SccProjectUniqueName1 = project-unique-name1.csproj
            SccProjectName1 = your-project-name
            SccLocalPath1 = project-local-path
            SccProjectUniqueName2 = project-unique-name2.csproj
            SccProjectName2 = project-name-2
            SccLocalPath2 = local-path2
            SccProjectUniqueName3 = project-unique-name3.csproj
            SccProjectName3 = project-name-3
            SccLocalPath3 = local-path3.
        EndGlobalSection

     这段代码是项目启动时加载的TFS配置,我们要剔除TFS,此段代码就必须删掉了,删除之后,保存文件即可。

  3. 修改各个子项目中的信息,这些信息在:*.csproj(C#项目,其他项目文件后缀不同)

    完成上面两步,项目的TFS控制信息已经清理的差不多了,如果是VS2010项目,则用2010打开的时候会有提示,选择永久(完全)删除源代码控制的关联绑定,确认即可完成整个项目的TFS清理工作1

    Mitchell这里使用的是VS2012,打开的是VS2013的项目,在打开项目的时候,虽然完成了上面两步,但在加载项目时,在VS的输出窗口中还是会显示:

    未能找到解决方案的映射。
    未能找到解决方案的映射。
    未能找到解决方案的映射。
    活动解决方案已暂时与源代码管理断开连接,因为服务器不可用。若要尝试重新连接源代码管理,请在服务器可用时关闭并重新打开解决方案。如果要连接到其他服务器,请使用“更改源代码管理”对话框。

     这种问题是因为*.csproj中还有版本控制信息,导致VS还会尝试进行TFS相关操作,要解决这个问题,需要删除*.csproj文件中的相关信息,用文本编辑器打开文件,你能看到类似下面的信息:

      <PropertyGroup>
        <!--其他配置-->
        <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
        <FileAlignment>512</FileAlignment>
        <SccProjectName>???</SccProjectName>
        <SccLocalPath>???</SccLocalPath>
        <SccAuxPath>???</SccAuxPath>
        <SccProvider>???</SccProvider>
      </PropertyGroup>

    上面的Scc*的配置即是版本控制信息。可以简单粗暴的将它删除即可,删除完成后,保存文件。

完成上面的操作之后,我们再次用VS打开项目,就不会再有任何TFS的相关信息提示了,又可以和VS快乐的玩耍了。

当然 如果你觉得这还是麻烦,那么你可以下载Mitchell写的TFSEliminator 工具(需要.NET 4.0支持)

使用也是相当方便,有两种方式:

  1. 1. 命令行:
  2. # 在命令行下,使用:
    # Application ProjectRoot
    # 的格式即可完成对指定目录下的TFS信息的剔除
    # 如:项目在D:\Temp\Test下面
    TFSEliminator.exe D:\Temp\Test
  3. 要直接运行,只需要将程序复制到项目的根目录下,然后双击运行即可。

注意: 命令行会有提示,如果确认路径没有问题,记得按回车或者Y哦~

 

参考:

1. VS2010的相关信息参见的是这里

关于博主

  一枚成分复杂的网络IT分子,属于互联网行业分类中的杂牌军。