VisualStudio 2017中使用git的TeamExplorer声明解决方案文件已更改,但未显示任何更改

时间:2018-02-20 14:02:02

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

在项目的某个时刻,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. 尝试通过提交所有操作按钮提交此重影更改,VS显示一般错误“致命:提交输出中的意外序列。”。

  5. 重新克隆整个仓库无济于事。

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

  7. 行结尾签出罚款(CR / LF)。

  8. 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
    

2 个答案:

答案 0 :(得分:1)

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

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

在任何一种情况下,通知源控制提供程序的Visual Studio中的子系统可能实际上不会跟进并编辑该文件。这可能导致文件显示为在内存中编辑但没有实际更改。保存文件(对于解决方案,File->全部保存)应该会重置文件的状态,至少在下一个编辑通知进入之前。

希望这有帮助。

答案 1 :(得分:0)

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

__JSONSchema = 

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

相关问题