it-roy-ru.com

Проект GUID продолжает меняться

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

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

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

Сборка из MSBUILD дает сбой.

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

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

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

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

29
lysergic-acid

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

Иногда это случается со мной, когда у меня есть один и тот же проект в нескольких решениях, и каждое решение использует разные 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? форум = csharpide

32
Ty H.

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

Существует обходной путь, описанный здесь: 

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

13
Bogdan Gavril MSFT

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

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

3
Richard Petheram

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

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

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

2
user6621167

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

0
Turbo

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

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

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

0
LoneSR