webentwicklung-frage-antwort-db.com.de

Projekt GUID ändert sich ständig

Wir haben eine VS2008-Lösung und ich habe bemerkt, dass etwas Seltsames passiert ist:

einige Projekte verweisen auf andere Projekte, die in derselben Lösung definiert sind (hinzugefügt als Projektverweise). Dies wurde vor einiger Zeit getan.

Direkt aus VS zu bauen funktioniert gut.

Das Bauen von MSBUILD schlägt fehl.

Ich habe die Projektreferenz entfernt und wieder hinzugefügt, und ich habe festgestellt, dass GUID des Projekts geändert wurde. Das Bauen von MSBUILD funktioniert jetzt.

Das Problem ist, ich muss jetzt alle Projekte durchgehen und das überprüfen.

Außerdem habe ich keine Ahnung, warum dies passiert ist (warum unterscheidet sich das Projekt GUID von dem, was es zuvor war, und ich bin mir nicht sicher, ob dies erneut vorkommt).

Was könnte die Ursache sein?

29
lysergic-acid

Ich sehe dieses Problem auch in Visual Studio 2013 und es ist keine Source Control-Integration erforderlich. 

Es passiert mir gelegentlich, wenn ich dasselbe Projekt in mehreren Lösungen habe, jede Lösung ein anderes GUID für dieses Projekt verwendet und das Projekt entsprechend aktualisiert. Die Lösung besteht darin, die .sln-Dateien manuell zu ändern, um sie zu synchronisieren. Die Antwort für diese Antwort geht an Chunsheng Tang.

Öffnen Sie zunächst die Lösungsdatei (.sln) mit Notepad und checken Sie dort die Projektverweise aus. Das Format ist wie folgt:

     # 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

Das zweite GUID für jedes Projekt ist der Verweis auf das freigegebene Projekt.

Wählen Sie zum Lösen des Problems ein einzelnes GUID für Ihr freigegebenes Projekt aus. Stellen Sie sicher, dass alle Lösungen, die sie öffnen, diese Single haben, also dasselbe GUID in ihren Lösungsdateien. (Bitte sichern Sie Ihre Dateien, bevor Sie diese Änderungen vornehmen.)

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

32
Ty H.

Das ProjectGuid ändert sich aufgrund der Integration in ein Quellcodeverwaltungssystem wie TFS. Geschieht, wenn andere Personen beispielsweise die Dateien öffnen. 

Hier ist eine Problemumgehung beschrieben: 

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

13

Das Problem stellte sich für mich als doppeltes GUID in einer der Lösungsdateien heraus. In der .sln für mein Installationsprogramm habe ich festgestellt, dass das Konfigurationsprojekt GUID (überall verwendet) und das Installationsprojekt GUID (lösungsspezifisch) identisch sind. Beim Öffnen der Projektmappe änderte VS das GUID für eines von ihnen in der Projektdatei, nicht jedoch in der Projektmappendatei. Zufällig wählte es immer das geteilte, was maximalen Kummer verursachte. Das Update bestand darin, ein neues GUID für das Installationsprogramm zu erstellen und alle anderen Lösungsdateien manuell wieder auf das korrekte GUID für das Config-Projekt zu bearbeiten.

Ich habe keine Ahnung, wie das zustande gekommen ist, da ich niemals Projekte kopiere, um sie zu erstellen.

3

Die Lösungsdatei erhält die Projekt-Guid aus der Projektdatei. Haben Sie ein Upgrade der Lösung/des Projekts von einer früheren Version von VS durchgeführt? Wenn sich die GUID in der Lösungsdatei ständig ändert, kann dies daran liegen, dass die Projektdatei überhaupt keine GUID enthält. Daher erstellt VS bei jedem Öffnen der Lösung eine neue. Ich würde dies einen Fehler im VS-Upgrade-Mechanismus nennen, aber niemand hat mich gefragt. Beheben Sie das Problem, indem Sie eine Leitlinie wie folgt in Ihre Projektdatei einfügen:

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

Öffnen Sie die Lösung noch einmal und lassen Sie die Projekt-Guid ein letztes Mal in diese neue Guid ändern. Die Guid wird sich nie wieder ändern.

2
user6621167

Zur Problemumgehung: Auf GUID kann an mehreren Stellen in der Lösungsdatei (.sln) verwiesen werden. Denken Sie daran, alle Verweise auf diese GUID zu ersetzen, nicht nur die, die in der Problemumgehung erwähnt wurde (die Problemumgehung ist gesperrt - Sie können dort keinen Kommentar hinterlassen, daher musste ich stattdessen diesen Beitrag beantworten).

0
Turbo

Dies ist der Fall, wenn Sie zwei Projekte mit derselben Guid in derselben Lösung haben. VS weist einem davon eine neue Guid zu. Dies kann passieren, wenn eine neue Lösung mit einem neuen Project erstellt wird und Sie dies tun Fügen Sie freigegebene Projekte ein. Möglicherweise haben Sie eine Guid, die der des neuen Projekts entspricht. Das Problem ist, dass alle anderen Lösungen, die bereits das gemeinsame Projekt eingefügt haben, die Guid erneut ändern müssen, und das ist ärgerlich.

Eine einfache Lösung, anstatt die Projektierungs-/Projektdateien von Hand zu bearbeiten: Entfernen Sie einfach die Projekte und fügen Sie die gemeinsam genutzten Projekte als Erstes und danach als Nächstes ein NEUES Projekt ein. VS gibt also eine neue - nicht doppelte - Leitlinie für das neue Projekt an und muss nicht die Leitlinie der gemeinsam genutzten Projekte ändern.

... so viel zum Thema "Globally Unique Identifier" ;-)

0
LoneSR