VS打破解决方案文件

时间:2011-09-06 06:23:43

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

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

  1. 扫描查找.csproj.vcproj个文件的文件夹。
  2. 根据.csproj.vcproj文件编写文本,创建包含所有项目的解决方案文件。
  3. 构建该解决方案。通过从命令行调用devenv.exe /Build(在python上subprocess.call)。
  4. 我的问题是:当我构建时,VS会更改我的SLN中的配置。具体来说,在SLN的Win32配置中,所有.csproj项目(.NET项目)都从x86切换到x64,并从构建中标记出来。

    尝试不起作用: 更改SLN以使x86处的所有.NET和Win32解决方案配置下的x86上的VC。同样,VS在打开SLN时会破坏它:VC会自动更改为目标x64并标记出构建。

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

    所以:

    1. 任何人都有更优雅的解决方案?
    2. 除了/Build - /Clean之外,有什么更好的方法让VS打破文件吗?

1 个答案:

答案 0 :(得分:0)

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

公司的人们声称这一切都在当天奏效,我发现很难相信。我一遍又一遍地扫描构建它的代码和生成的sln文件,并且无法区分。

因为我没看空白!

月前我天真地改变了构建.sln文件的代码,用不同的缩进来编写文件。

以下是文件的区别:

这很有效,因为该文件与VS制作的文件完全相同,包括indenetation:

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