【问题标题】:VS breaks solution fileVS 打破解决方案文件
【发布时间】:2011-09-06 06:23:42
【问题描述】:

我有一个 (python) 脚本 可以完成以下任务:

  1. 扫描文件夹以查找 .csproj.vcproj 文件。
  2. 根据.csproj.vcproj 文件编写文本,创建一个包含所有项目的解决方案文件。
  3. 构建该解决方案。通过命令行调用devenv.exe /Build(python 上为subprocess.call)。

我的问题是:当我构建时,VS 更改了我的 SLN 中的配置。具体来说,在 SLN 的 Win32 配置中,所有 .csproj 项目(.NET 项目)从 x86 切换到 x64 并从构建中标记出来。

尝试失败: 将 SLN 更改为在 x86 上拥有所有 .NET,在x86 解决方案配置下拥有Win32 上的 VC。同样,VS 在打开 SLN 时会破坏它:VC 会自动更改为目标 x64 并标记为构建之外。

尝试成功但相当笨拙: 首先,我让 VS 破坏文件。我设法做到这一点的唯一笨拙方法是从命令行调用/Build 然后/Clean。接下来,我通过替换 VS 破坏的配置来修复 SLN 文件。现在当我/Build它时,VS 不会改变 SLN。

所以:

  1. 谁有更优雅的解决方案?
  2. 除了/Build - /Clean 之外,还有什么更好的方法让 VS 破坏文件?

【问题讨论】:

    标签: .net python visual-studio-2008 visual-c++ scripting


    【解决方案1】:

    简单的答案是,缩进对 VS sln 解析器很重要。

    因此,公司的人声称这一切都在过去有效,我很难相信。我一遍又一遍地扫描构建它的代码和生成的 sln 文件,但看不出任何区别。

    因为我没有看空格!

    一个月前,我无意中更改了构建 .sln 文件的代码,以编写具有不同缩进的文件。

    这是文件的区别:

    这行得通,因为该文件与 VS 制作的文件相同,包括缩进:

    Microsoft Visual Studio Solution File, Format Version 10.00
    # Visual Studio 2008
    Project("{19091980-2008-4CFA-1491-04CC20D8BCF9}") = "proj1", "..\proj1_2008.vcproj", "{C844505D-3D9E-437F-94D6-BDA74999651D}"
    ...
    EndProject
    Project ...
    ..
    EndProject
    Global
    Global
      GlobalSection(SolutionConfigurationPlatforms) = preSolution
    *good     Debug|Win32 = Debug|Win32
              Debug|x64 = Debug|x64
              Release|Win32 = Release|Win32
              Release|x64 = Release|x64
      EndGlobalSection
      ....
    

    这导致 VS 重新编辑,并作为破坏我们想要的解决方案配置的副作用:

    Microsoft Visual Studio Solution File, Format Version 10.00
    # Visual Studio 2008
    Project("{19091980-2008-4CFA-1491-04CC20D8BCF9}") = "proj1", "..\proj1_2008.vcproj", "{C844505D-3D9E-437F-94D6-BDA74999651D}"
    ...
    EndProject
    Project ...
    ..
    EndProject
    Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
    *bad    Debug|Win32 = Debug|Win32
    *indent-Debug|x64 = Debug|x64
    *ation  Release|Win32 = Release|Win32
            Release|x64 = Release|x64
        EndGlobalSection
        ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      相关资源
      最近更新 更多