Подтвердить что ты не робот

Идентификатор GUID проекта постоянно меняется

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

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

Построение прямо из VS отлично работает.

Здание из MSBUILD терпит неудачу.

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

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

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

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

4b9b3361

Ответ 1

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

Это случается со мной иногда, когда у меня один и тот же проект в нескольких решениях, каждое решение использует другой GUID для этого проекта и соответственно обновляет проект. Решение состоит в том, чтобы вручную модифицировать файлы .sln, чтобы синхронизировать их. Кредит за этот ответ отправляется в Chunsheng Tang.

Сначала откройте файл решения (.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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

Ответ 6

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

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

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