Guid enthalten sollte 32 Ziffern mit 4 Bindestrichen (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) in VS-Erweiterbarkeit walkthrough
Ich bin mit dem Walkthrough: Teil 1 - Erstellen eines einfachen Projekts System genau so geschrieben, von der website http://msdn.microsoft.com/en-us/library/cc512961.aspx und die Managed-Paket Rahmen für Projekte genau wie heruntergeladen aus http://mpfproj11.codeplex.com/. Ich habe getestet die Exemplarische Vorgehensweise auf mehrere Computer der Entwicklung in Visual Studio 2013. Ich habe auch getestet, die in Visual Studio 2010 und 2012 mit Ihren jeweiligen SDK. Die gleichen Probleme zu Folgen präsentierten sich in den einzelnen Prüfungen.
Problem: ich erhalte die Ausnahme - Eine Ausnahme des Typs " System.FormatException " ist in mscorlib.dll wurde aber nicht behandelt werden, in Benutzer-code Zusätzliche Informationen: der Guid enthalten sollte 32 Ziffern mit 4 Bindestrichen (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx) in die ProjectNode Klasse Methode:
private void SetProjectGuidFromProjectFile()
{
string projectGuid = this.GetProjectProperty(ProjectFileConstants.ProjectGuid);
if (String.IsNullOrEmpty(projectGuid))
{
this.projectIdGuid = Guid.NewGuid();
}
else
{
Guid guid = new Guid(projectGuid);
if (guid != this.projectIdGuid)
{
this.projectIdGuid = guid;
}
}
}
Auf der Linie Guid guid = new Guid(projectGuid);
projectGuid ist die Rückgabe der string "$guid1$", die von <ProjectGuid>$guid1$</ProjectGuid>
im SimpleProject.myproj.
Break-Punkte in der Load-Methode des ProjectNode Klasse zeigt, dass
this.projectIdGuid = Guid.NewGuid();
gibt eine neue guid wie {6d4b8668-51ca-40eb-b013-9e7f96b82b68}.
In der Reload-Methode der ProjectNode Klasse die Methode this.SetProjectGuidFromProjectFile()
ausgelöst wird und dann die exeption geworfen wird, wie oben gezeigt. Wenn ich <ProjectGuid>$guid1$</ProjectGuid>
im SimpleProject.myproj, ich bekomme durch die Anwendung, ohne Ausnahme, aber Sie haben keine guid im Zusammenhang mit der Anwendung und erhalten eine Fehlermeldung, wenn Sie versuchen, Zugriff auf die Seite Eigenschaften für die neu erstellte Anwendung. .myproj kann nicht registrieren, richtig? Ich verbrachte eine Woche der recherche zu diesem Thema durch diverse blogs und Foren.
$guid1$
muss ersetzt werden durch die tatsächliche GUID entweder automatisch irgendwo anders im code, oder manuell.Von meinem Verständnis die $guid1$ sollte ersetzt werden, mit der in-place-code mit dem neu erstellten guid. Zum Beispiel, wenn ich eine änderung .myproj .csproj $guid1$ wird ersetzt mit dem neu erstellten guid. Allerdings, $namespace$ und $Klasse$ im Programm.cs wird nicht ersetzt. ein Teil der Zweck dieser exemplarischen Vorgehensweise wird das erstellen und registrieren Sie Ihre eigenen Projekt-Typ. In der exemplarischen Vorgehensweise ist es .myproj. Wenn ich codieren Sie einen guid in der SimpleProject.myproj als jedes Projekt entsteht aus diesem Projekt geben wird, haben die gleichen Anwendungs-guid.
Bitte Fragen, eine Frage pro Thema. Und bitte machen Sie klar, welche Frage Sie Fragen. Fragen wie diese sind nicht eine gute Passform.
Problem 2 gelöscht pro Ihren Antrag. wird die doppelte Frage mit Frage 2 nur auf gesonderte postm
InformationsquelleAutor Marty | 2014-05-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem kommt von der Tatsache der MPF (das ist eine ernste beschissene Stück code, das - leider, es ist die einzige full-blown Probe verfügbar) implementiert eine benutzerdefinierte template-parameter Ersatz-Prozess (eine Visual Studio-spezifische Prozess hier beschrieben: http://msdn.microsoft.com/en-us/library/eehb4faa.aspx) , unterstützt nur Ersatz für alle-Projekt (sub -) Elemente, aber nicht für das Projekt Element selbst. So können Sie nicht verwenden $guid1$ oder irgendeine andere $Person$ in der xxxx.myproj die Datei.
Als Sie heraus fand, die einfachste Möglichkeit ist, einfach entfernen Sie diese $guid1$ parameter, und lassen Sie es leer, als die MPF-unterstützt eine leere:
Nun, im Widerspruch zu Ihrem glauben 🙂 das funktioniert einwandfrei. Dies setzt die ProjectIDGuid ProjectNode Eigentum.
Eigentum Seite, für die Sie auch nach der ist ein ganz anderes Biest. Zu vereinfachen, stellt Visual Studio query Ihrer Hierarchie für die __VSHPROPID2.VSHPROPID_PropertyPagesCLSIDList Eigenschaft. Standardmäßig wird der MPF implementiert es so:
Guid.Leer ist eine schlechte Wahl (Sie können senden Sie einfach ein leeres array), weil es ausgelöst wird der folgende Fehler, die schwer zu diagnostizieren mit der standard leere guid, die wir nicht bekannt, Woher es kommt:
So, was Sie tun müssen, ist, überschreiben GetConfigurationIndependentPropertypages und geben Sie ihm eine Guid, die entspricht einer Klasse, die sich aus SettingsPage, etc. aber das ist eine andere Geschichte.
der Fehler ist der gleiche, da die guid-Analyse ist überall das gleiche .NET-Plattformen, aber ich glaube nicht, dass es in irgendeiner Weise einen Bezug. Kann dir nicht helfen, tut mir Leid, ich habe keinen Mac 🙂
ok kein problem, Danke für deine Zeit, Simon! 🙂
InformationsquelleAutor Simon Mourier