【问题标题】:TeamExplorer with git in VisualStudio 2017 claims solution file has changed, while showing no change在 Visual Studio 2017 中使用 git 的团队资源管理器声称解决方案文件已更改,但未显示任何更改
【发布时间】:2018-02-20 14:02:02
【问题描述】:

在项目的某个时间点,TeamExplorer 开始不断提示解决方案文件的变化,但与 VS 中未修改的版本对比并没有发现任何变化。

Screenshot: Team Explorer claiming solution file has been changed

到目前为止我尝试了什么:

  1. 为了排除 git 问题,我打开 git bash 并运行 git status,但也没有显示任何更改。
  2. 当我尝试暂存幽灵更新时,团队资源管理器的 git 控制台显示了这一点:

    文件未暂存,因为它在内存中修改但未保存到磁盘:C:\Develop\playground\ClassLibrary1\ClassLibrary1.sln

  3. 在 VS 中单击任何保存按钮或菜单功能均无济于事。

  4. 尝试通过 Commit All 操作按钮提交此重影更改,VS 显示一般错误“致命:提交输出中的意外序列。”。

  5. 重新克隆整个 repo 没有帮助。

  6. 将其他更改提交到解决方案文件将无济于事。

  7. 行尾结帐正常 (CR/LF)。

Visual Studio 版本为 15.5.5。

知道是什么原因造成的或如何摆脱它吗?


这是我的解决方案文件:

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.27130.2026
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{3E6F764F-D995-4551-921E-43D70B3129B8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{E9781EEA-6178-46BD-82B9-AED6B76C8D14}"
    ProjectSection(SolutionItems) = preProject
        version.json = version.json
    EndProjectSection
    ProjectSection(FolderGlobals) = preProject
         __JSONSchema = 
    EndProjectSection
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {3E6F764F-D995-4551-921E-43D70B3129B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {3E6F764F-D995-4551-921E-43D70B3129B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {3E6F764F-D995-4551-921E-43D70B3129B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {3E6F764F-D995-4551-921E-43D70B3129B8}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
    GlobalSection(ExtensibilityGlobals) = postSolution
        SolutionGuid = {7EDCF511-FC54-4E98-9064-11E9A1B43DD1}
    EndGlobalSection
EndGlobal

【问题讨论】:

  • 告诉我你的行尾。

标签: git visual-studio-2017 team-explorer


【解决方案1】:

更改页面中文件名旁边的 * 表示该文件在内存中被标记为已修改,并且内存中的任何更改可能尚未写入磁盘。不幸的是,即使文件没有实际更改,也可能会出现 *。

原因是每当 Visual Studio 中加载的文件即将被修改时,都会通知源代码管理提供程序。支持预编辑签出(例如:TFVC)的源代码控制提供程序可以选择在更改之前自动挂起对文件的编辑(如果在服务器工作区中工作)。不使用预编辑签出的源代码控制提供程序(例如:Git)可能仍会选择主动将文件列为编辑,以便用户知道内存中存在更改。

在任何一种情况下,通知源代码控制提供程序的 Visual Studio 中的子系统都可能不会真正执行并编辑文件。这可能导致文件在内存中显示为已编辑但没有实际更改。保存文件(对于解决方案,File->Save All)应该会导致文件的状态被重置,至少在下一个编辑通知到来之前。

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    我可以通过删除该行来解决问题

    __JSONSchema = 
    

    在将 JSON 文件 version.json 添加到解决方案时引入了这一行。 JSON 文件编辑器中的架构下拉框由 VisualStudio 设置为任意条目。然后我选择了 <No schema selected> 并保存了解决方案。这就是虚线的创建方式。

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 2017-12-05
      • 2015-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-15
      • 2015-07-22
      • 1970-01-01
      相关资源
      最近更新 更多