GUID проекта постоянно меняется - PullRequest
29 голосов
/ 11 сентября 2011

У нас есть решение VS2008, и я заметил нечто странное:

некоторые проекты ссылаются на другие проекты, которые определены в том же решении (добавлены в качестве ссылок на проекты).Это было сделано некоторое время назад.

Сборка прямо из VS работает нормально.

Сборка из MSBUILD не удалась.

Я удалил ссылку на проект и заново добавил ее, и язаметил, что GUID проекта изменен.Сборка из MSBUILD теперь работает.

Проблема в том, что теперь мне нужно просмотреть все проекты и проверить это.

Более того, я понятия не имею, почему это произошло (почему GUID проекта отличается отчто это было раньше, и не уверен, что это может произойти снова).

Что может быть причиной этого?

Ответы [ 6 ]

33 голосов
/ 18 мая 2015

Я также вижу эту проблему в Visual Studio 2013, и она не требует интеграции Source Control.

Иногда со мной бывает, когда у меня один и тот же проект в нескольких решениях, каждое решение использует свой GUID для этого проекта и соответственно обновляет проект. Решение состоит в том, чтобы вручную изменить файлы .sln, чтобы синхронизировать их. Благодарность за этот ответ достается Чуньшен Тан.

Сначала откройте файл решения (.sln) с помощью блокнота и посмотрите там ссылки на проект. Формат такой:

     # Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsApplication1", "WindowsApplication1\WindowsApplication1.csproj", "{9378D255-CE38-45CD-82FA-A1EBFB86FD6C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{DE374096-FF44-4FDF-B248-C767039B4175}"
EndProject

Второй GUID для каждого проекта - это ссылка на общий проект.

Чтобы решить эту проблему, выберите один GUID для вашего общего проекта; Убедитесь, что все решения, которые его открывают, имеют один и тот же GUID в своих файлах решений. (Пожалуйста, сделайте резервную копию ваших файлов перед внесением этих изменений)

https://social.msdn.microsoft.com/Forums/en-US/1d632940-cc1d-49d5-a64c-d3e999216cbd/cant-avoid-the-projectguid-from-being-changed-in-csproj-file?forum=csharpide

13 голосов
/ 06 декабря 2011

ProjectGuid изменяется из-за интеграции с системой контроля версий, такой как TFS. Случается, если другие люди открывают файлы, например.

Здесь описан обходной путь:

http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/1d632940-cc1d-49d5-a64c-d3e999216cbd

4 голосов
/ 29 февраля 2016

Проблемой для меня оказался дубликат GUID в одном из файлов решения. Внутри .sln для моего установщика я обнаружил, что GUID проекта Config (используется повсеместно) и GUID проекта установщика (специфичные для решения) идентичны. Открытие решения заставило VS изменить GUID для одного из них в файле проекта, хотя, по-видимому, не в файле решения. Как это бывает, он всегда выбирал общий, вызывающий максимальное горе. Исправление состояло в том, чтобы создать новый GUID для проекта установщика и вручную отредактировать все остальные файлы решения обратно в правильный GUID для проекта Config.

Я понятия не имею, как это произошло, поскольку я никогда не копирую проекты для их создания.

3 голосов
/ 21 июля 2016

Файл решения получает руководство проекта из файла проекта.Вы обновили решение / проект с более ранней версии VS?Если guid в файле решения продолжает изменяться, это может быть из-за того, что у файла проекта вообще нет guid, поэтому VS создает новый при каждом открытии решения.Я бы назвал это ошибкой в ​​механизме обновления VS, но никто не спросил меня.Исправьте проблему, добавив guid в файл вашего проекта, например так:

  <PropertyGroup>
    <ProjectGuid>{FB0F4A2A-1F78-42BF-8E31-E4FEFDC5565F}</ProjectGuid>
  </PropertyGroup>

Откройте решение еще раз и дайте руководству проекта в последний раз изменить на этот новый guid.Гид больше никогда не изменится.

0 голосов
/ 31 января 2019

Это происходит, если у вас есть два проекта с одинаковым guid в одном решении, VS назначит новый guid одному из них. И это может произойти, когда создается новое решение с новым проектом, и если вы вставляете общие проекты, у них может быть guid, такой же, как у нового проекта. Проблема в том, что все другие решения, в которые также был добавлен общий проект, должны снова изменить guid, и это досадно.

Простое решение вместо редактирования файлов решений / проектов вручную: Просто удалите проекты, а затем вставьте общие проекты ПЕРВЫМ и ПОСЛЕ ТОГО, как вставьте НОВЫЙ проект. Таким образом, VS дает новое, а не дублирующее руководство для нового проекта и не вынуждено изменять руководство для общих проектов.

... вот вам и тема "Глобальный уникальный идентификатор"; -)

0 голосов
/ 25 октября 2016

Относительно обходного пути: на GUID можно ссылаться в нескольких местах в файле решения (.sln).Не забудьте заменить все ссылки на этот GUID, а не только те, которые упомянуты в обходном пути (обходной путь заблокирован - невозможно оставить комментарий там, поэтому мне пришлось ответить на этот пост вместо этого).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...