为什么在项目文件中缺少<SccProjectName>导致"项目文件未绑定到源代码管理"

use*_*704 27 csproj visual-studio-2012 tfs2012

我有一个非常讨厌的问题,我找到了解决方案,但我想问你为什么它的行为......

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

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

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

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

<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
Run Code Online (Sandbox Code Playgroud)

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

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

谢谢

Jus*_*TFS 44

发生这种情况是因为解决方案文件中包含源控制信息,而.csproj文件将实现解决方案文件所指示的内容.

<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
Run Code Online (Sandbox Code Playgroud)

当SAK从解决方案文件中提取信息时,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
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • @Hoppe AFAIK 他们不再需要了 (3认同)
  • 我将一个项目从 TFS 移至 Git。还应该有这些线吗?即 &lt;SccProjectName&gt;SAK&lt;/SccProjectName&gt; (2认同)