Visual Studio постоянно меняет файл project.sln - PullRequest
16 голосов
/ 16 ноября 2010

Я работаю в команде над проектом Visual C ++.Следуя совету , мы получили, что отслеживаем файл .sln проекта с помощью нашего SCM.Оказывается, что каждый раз, когда я беру у своего партнера (да, мы используем git) и открываю решение в VS, файл .sln обновляется.Обновляемая часть - это длинный идентификатор, который появляется несколько раз (в данном случае заканчивающийся на 7C44) в следующем сегменте:

    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.ActiveCfg = Debug|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.Build.0 = Debug|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.ActiveCfg = DebugStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.Build.0 = DebugStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.ActiveCfg = Release|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.Build.0 = Release|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.ActiveCfg = ReleaseStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.Build.0 = ReleaseStaticCRT|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.ActiveCfg = Template|Win32
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.Build.0 = Template|Win32

Что означает это число?Как мы можем заставить это перестать изменяться между нами?

Ответы [ 3 ]

29 голосов
/ 14 марта 2012

Мне было трудно найти этот конкретный пост при поиске ответа, поэтому я просто хотел добавить несколько ключевых слов и пояснений, чтобы их было легче найти.Благодаря фантастическим ответам Дэниэла и tgb я смог решить эту проблему, и у меня и моей команды больше нет конфликтующих файлов решений после открытия Visual Studio 2010 (я бы проголосовал за их ответы, но я только что присоединился сегодня и пока не имеюрепутации достаточно, чтобы голосовать за ответы ...).

Итак, чтобы задать вопрос несколькими способами: Почему Visual Studio изменяет .sln файлы при открытии решения? Почему файлы .sln имеют локальные изменения? или Что вызывает конфликты слияния в файлах решения Visual Studio?

Ответ: Скорее всего, другой или отсутствующий атрибут ProjectGuid вФайл проекта .vcxproj будет вызывать локальные изменения.Это может произойти из-за обновления проектов из предыдущих версий Visual Studio или просто из-за ручного копирования файла проекта и редактирования его частей.

Исправление заключается в добавлении строки:

<ProjectGuid>{###}</ProjectGuid>

(с соответствующим идентификатором из файла решения вместо ###) в файл .vcxproj в узле 'PropertyGroup Label = "Globals", например:

  <PropertyGroup Label="Globals">
    <ProjectGuid>{FD0675C0-EC06-E665-4001-12DEE6694605}</ProjectGuid>
    <RootNamespace>MyProject</RootNamespace>
  </PropertyGroup>

В противном случае Visual Studio простоназначьте новый случайный ProjectGuid для каждого проекта и обновите файл .sln.«ProjectGuid» можно легко найти для данного проекта в файле .sln:

Project("{<Filter#>}") = "MyProjName", "src\to\Proj.vcxproj", "{<ProjectGuid>}"
9 голосов
/ 16 ноября 2010

Это GUID, который Visual Studio использует для ссылки на отдельные проекты. Тот же GUID находится в верхней части файла .sln, где определены / импортированы проекты.

Visual Studio считывает GUID из соответствующего файла .csproj / .vbproj. Там вы должны найти свойство ProjectGuid в верхней части с соответствующим GUID. Если у вас и вашего партнера определен другой GUID, то .sln также обновится.

6 голосов
/ 23 февраля 2011

У меня была такая же проблема.Наконец я заметил, что он взят из файла vcxproj, который не определяет его GUID.Я вручную добавил этот GUID в свой файл vcxproj:

  <PropertyGroup Label="Globals">
    <ProjectGuid>{D3303AD3-B7E5-48F8-919C-18202ABAEF00}</ProjectGuid>
    <RootNamespace>MyProject</RootNamespace>
    <ProjectName>MyProject</ProjectName>
    <Keyword>MFCProj</Keyword>
  </PropertyGroup>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...