visual-studio-2012 - 为什么在项目文件中缺少 <SccProjectName> 导致 "The project file is not bound to source control"

标签 visual-studio-2012 csproj

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

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

This project file ... is not bound to source control, but the solution contains source control binding information for it. Do you want...



不管我做了什么,我仍然有这个信息。在 File->Source Control->Advanced->Change Source Control...' 窗口中,一切都很好。正确创建的 *.vspscc 文件具有良好的内容。我正在删除绑定(bind)并一次又一次地添加它,但这没有帮助。我一直收到这个烦人的消息...

然后我在 *.csproj 文件中发现了一个不同之处。我有问题的项目没有以下 XML 数据:
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>

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

有没有人可以告诉我为什么缺少这些元素以及为什么它们会导致关于解决方案绑定(bind)的烦人消息导致这种永无止境的问题?

谢谢

最佳答案

发生这种情况是因为解决方案文件中包含源代码控制信息,而 .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

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

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

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

关于visual-studio-2012 - 为什么在项目文件中缺少 <SccProjectName> 导致 "The project file is not bound to source control",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18467994/

相关文章:

c# - Visual Studio 工具箱不包括来自同一解决方案的另一个项目的用户控件

asp.net - MvcBuildViews true 与 ASP.NET MVC 2 中的 Entity Framework

c# - .net Core 解析csproj文件到对象

c# - 无法应用项目 X 的​​发布属性

c# - Visual Studio 2012 Web API 项目无法运行 - 找不到 Newtonsoft.Json

.net - 在 VS 2012 中保存/导出单元测试结果

visual-studio-2010 - 在 VS 2012 (C++) 中编译 Visual Studio 2010 项目 : error LNK2038: mismatch detected for '_MSC_VER' : value '1600' doesn't match value '1700'

visual-studio - MSBuild:包含自定义资源文件作为嵌入资源

powershell - 如何使用nuget更改项目类型和启动对象

nuget - 如何使用新的 csproj VS2017 打包附加的symbols.nupkg