VS ломает файл решения - PullRequest
       6

VS ломает файл решения

0 голосов
/ 06 сентября 2011

У меня есть (python) скрипт , который выполняет следующее:

  1. Сканирование папки в поисках файлов .csproj и .vcproj.
  2. Создание файла решения, содержащего все проекты, путем написания текста в соответствии с файлами .csproj и .vcproj.
  3. Построение этого решения. Вызвав devenv.exe /Build из командной строки (subprocess.call на python).

Моя проблема: при сборке VS изменяет конфигурацию в моем SLN. В частности, в конфигурации Win32 SLN все проекты .csproj (проекты .NET) переключаются с x86 на x64 и выделяются из сборки.

Попытка, которая не сработала: Изменение SLN, чтобы все .NET в x86 и VC в Win32 в x86 config config. И снова VS ломает его при открытии SLN: VC автоматически изменяются на цель x64 и выделяются из сборки.

Попытка, которая сработала, но довольно неуклюжа: Во-первых, я позволил VS сломать файл. Единственный неуклюжий способ, которым мне удалось это сделать, это вызвать /Build затем /Clean из командной строки. Затем я исправляю файл SLN, заменяя конфиги, которые сломал VS. И теперь, когда я /Build это, VS не изменяет SLN.

Итак:

  1. Кто-нибудь с более элегантным решением?
  2. Любой лучший способ заставить VS сломать файл, кроме /Build - /Clean?

1 Ответ

0 голосов
/ 22 сентября 2011

Простой ответ: отступы имеют значение для парсера 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
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...