2011-09-06 130 views
0

我有一個(蟒蛇)腳本是完成以下操作:VS打破解決方案文件

  1. 掃描尋找.csproj.vcproj文件的文件夾。
  2. 根據.csproj.vcproj文件創建解決方案文件以包含所有項目。
  3. 構建解決方案。通過從命令行調用devenv.exe /Build(python上的subprocess.call)。

我的問題是:當我建立,VS改變我的SLN配置。具體來說,在SLN的Win32配置中,所有.csproj項目(.NET項目)都從x86切換爲x64,並從構建中標出。

嘗試,沒有工作: 改變SLN有在x86所有.NETs下x86解決方案配置上Win32的風險投資。同樣,VS在打開SLN時會將其分解:VC會自動更改爲目標x64並標記爲構建版本。

嘗試工作,但很笨拙: 首先,我讓VS打破文件。我設法做的唯一笨拙的方式是從命令行調用/Build,然後/Clean。接下來,我通過替換VS打破的配置來修復SLN文件。而現在當我/Build它,VS不改變SLN。

所以:

  1. 任何人只要有一個更優雅的解決方案?
  2. 任何更好的方式使VS打破其他文件/Build - /Clean

回答

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