为什么缺少项目文件中的<sccprojectname>导致“项目文件未绑定到源代码管理”</sccprojectname>

时间:2013-08-27 14:17:05

标签: visual-studio-2012 tfs2012 csproj

我有一个非常恼人的问题,我找到了解决方案,但我想问你为什么会这样......

我正在使用Visual Studio 2012和TFS 2012.一切都很好,但有一天我发现了一个问题。当我将新项目添加到我的解决方案中时,每次重新打开解决方案时,我总是会收到此消息:

  

此项目文件...未绑定到源代码管理,但该解决方案包含源代码管理绑定信息。你想要......

无论我做了什么,我仍然有这个信息。在File-&gt; Source Control-&gt; Advanced-&gt; Change Source Control ...'窗口中,每件事都很好。正确创建好内容的* .vspscc文件。我正在删除绑定并一次又一次地添加它,但它没有帮助。我一直有这个烦人的消息......

然后我发现了* .csproj文件中的一个区别。我有问题的项目没有以下XML数据:

<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>

当我添加这些行时,问题就解决了......

有没有人可以告诉我为什么那些缺失的元素以及为什么它们会引发关于解决方案绑定的恼人消息的永无止境的问题?

谢谢

1 个答案:

答案 0 :(得分:42)

这是因为解决方案文件中包含源控制信息,而.csproj文件将实现解决方案文件所说的内容。

<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>

SAK引用“应该已经知道”,因为它从解决方案文件中提取信息。 解决方案文件应包含类似于下面显示的内容

GlobalSection(TeamFoundationVersionControl) = preSolution
        SccNumberOfProjects = 4
        SccEnterpriseProvider = {3BA58AB2-18FA-4F8D-95D4-32DDF27D184A}
        SccTeamFoundationServer = http://TFSSERVER:8080/tfs/DPC
        SccLocalPath0 = .
        SccProjectUniqueName1 = Project1\\Project1.csproj
        SccProjectName1 = Project1
        SccLocalPath1 = Project1
        SccProjectUniqueName2 = Project2\\Project2.csproj
        SccProjectName2 = Project2
        SccLocalPath2 = Project2
        SccProjectUniqueName3 = Project3\\Project3.csproj
        SccProjectName3 = Project3
        SccLocalPath3 = Project3
        SccProjectUniqueName4 = Project4\\Project4.csproj
        SccProjectName4 = Project4
        SccLocalPath4 = Project4
    EndGlobalSection

现在可能发生的情况是,如果首先检查解决方案的人和项目不包含Solution.vssscc文件,则Visual Studio无法确定源控件。如果发生这种情况,请删除vssscc文件并关闭解决方案。重新打开解决方案将创建一个新的vssscc文件,确保将其重新检入源代码控制。

添加项目时要检查的另一件事是确保解决方案文件被检出,然后在提交项目时再次检入。

只要解决方案文件和vssscc文件由源代码控制正确处理,那么当您添加新项目时,它应从解决方案文件中选取源控件设置,然后将SCC节点应用于新项目