VSX 2010-Paket laden - Das Markup.xaml-Parsing kann keine Assemblys finden

7

Ich habe eine Wpf UserControl-Bibliothek erstellt und sie enthält eine große Gruppe von Assemblys und verweist sogar auf zwei andere Klassenbibliotheken und mehrere zusammengeführte Resource-Dictionaries. Es baut ohne Fehler auf. Ich baute ein einfaches VSX-Paket und referenzierte die Wpf-Bibliothek und versuchte dann, es auszuführen. Beim Parsen der Seite konnte nur ein Teil der Assemblies gefunden werden, die auf meiner xaml UserControl Seite referenziert wurden. Es gibt mir die Fehlermeldung unten im Fusionsprotokoll für jede nicht bindbare Assembly. Wenn ich die "schlechte" Assembly entferne, parst sie weiter zum nächsten nicht auffindbaren Assembly. Es kann eine meiner referenzierten Klassenbibliotheken finden, aber nicht die andere. Sie sind im Wesentlichen die gleichen mit unterschiedlichen Klasseninhalt eingerichtet.

Hat also jemand irgendwelche Ressourcen oder Antworten dafür? Meine anderen Testprojekte, die sogar WCF-Dienste enthalten, werden ohne Probleme geladen, und das ist ein Stumper für mich.

Danke, Danny

=== Vorbindezustandsinformationen === LOG: Benutzer = AMRS \ dhoneycu LOG: DisplayName = System.Windows.Interactivity, PublicKeyToken = 31bf3856ad364e35  (Teilweise) WRN: Teilbindungsinformationen wurden für eine Baugruppe bereitgestellt: WRN: Assemblyname: System.Windows.Interactivity, PublicKeyToken = 31bf3856ad364e35 | Domänen-ID: 1 WRN: Eine teilweise Bindung tritt auf, wenn nur ein Teil des Anzeigenamens der Assembly bereitgestellt wird. WRN: Dies kann dazu führen, dass der Ordner eine falsche Assembly lädt. WRN: Es wird empfohlen, eine vollständig spezifizierte Textidentität für die Baugruppe anzugeben, WRN: besteht aus dem einfachen Namen, der Version, der Kultur und dem öffentlichen Schlüsseltoken. WRN: Weitere Informationen und häufige Lösungen zu diesem Problem finden Sie im Whitepaper Ссылка . LOG: Appbase = Datei: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / LOG: Initial PrivatePath = NULL

Aufruf der Baugruppe: (Unbekannt).

LOG: Diese Bindung beginnt im standardmäßigen Ladekontext. LOG: Verwenden der Anwendungskonfigurationsdatei: C: \ Programme \ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ devenv.exe.Config LOG: Verwenden der Host-Konfigurationsdatei: LOG: Verwenden der Computerkonfigurationsdatei von c: \ WINDOWS \ Microsoft.NET \ Framework \ v4.0.30319 \ config \ machine.config. LOG: Richtlinie wird zu diesem Zeitpunkt nicht auf Referenz angewendet (private, benutzerdefinierte, partielle oder standortbasierte Assembly-Bindung). LOG: Versuch des Herunterladens der neuen URL-Datei: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / System.Windows.Interactivity.DLL. LOG: Download der neuen URL-Datei versuchen: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / System.Windows.Interactivity / System.Windows.Interactivity.DLL. LOG: Versuch des Downloads der neuen URL-Datei: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / PublicAssemblies / System.Windows.Interactivity.DLL. LOG: Versuch des Herunterladens der neuen URL-Datei: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / PublicAssemblies / System.Windows.Interactivity / System.Windows.Interactivity.DLL. LOG: Versuch des Downloads der neuen URL-Datei: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / System.Windows.Interactivity.DLL. LOG: Download der neuen URL-Datei versuchen: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / System.Windows.Interactivity / System.Windows.Interactivity.DLL. LOG: Download der neuen URL-Datei versuchen: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / TemplateProviders / System.Windows.Interactivity.DLL. LOG: Download der neuen URL-Datei versuchen: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / CommonExtensions / Microsoft / TemplateProviders / System.Windows.Interactivity / System.Windows.Interactivity.DLL. LOG: Download der neuen URL-Datei versuchen: /// C: / Programme / Microsoft Visual Studio 10.0 / Common7 / IDE / PrivateAssemblies / DataCollectors / System.Windows.Interactivity.DLL. LOG: Versuch des Downloads der neuen URL-Datei: /// C: / Programme / Microsoft Visual Studio

    
isitdanny 18.12.2010, 16:14
quelle

2 Antworten

19

Sie sollten ein Attribut ProvideBindingPath in Ihre VSPackage-Klasse einfügen. Dies führt dazu, dass das Verzeichnis, in dem sich Ihre Paketassembly befindet, für Assemblierungen untersucht wird, die andernfalls nicht gefunden werden können (weil sie sich nicht im standardmäßigen VS-Prüfpfad befinden). Fügen Sie dazu folgende Datei in Ihr Projekt ein:

% VSSDKInstallverz \ VisualStudioIntegration \ Common \ Source \ CSharp \ RegistrationAttributes \ ProvideBindingPathAttribute.cs

Fügen Sie Ihrer VSPackage-Klasse dann das folgende Attribut hinzu:

[ProvideBindingPath] public class VsPackage1 : Package { ... }

    
Aaron Marten 20.12.2010, 04:21
quelle
0

Vielen Dank!

Ich verbrachte den besseren Teil eines Tages damit, es herauszufinden. Es sieht so aus, als ob eine Assembly im VSIX-Paket enthalten ist, sie sollte allerdings von Visual Studio gefunden werden. Allerdings war ich bei der Betrachtung des Fusion Logs verblüfft, warum es nirgendwo anders als an den Standard-Systemstandorten zu scannen schien.

Ich möchte feststellen, dass das Attribut ProvideBindingPath im Microsoft.VisualStudio.Shell-Namespace in späteren Versionen von VS SDK enthalten ist.

    
Chris Bordeman 12.07.2015 01:08
quelle

Tags und Links