TLDR;Entwurfszeit Fehler beim Suchen des Ressourcenverzeichnisses - Inkonsistent zwischen Projekten
Bildschirme, die während der Laufzeit neu auf eine externe Datei ResourceDictionary
im VS2015-Stil verweisen, aber nicht zur Entwurfszeit. Was gibt?
Bei der Arbeit haben wir ein Produkt, das WinForms viele WinForms-Bildschirme mit einem Entwickler beherbergt aktiv neue hinzufügen, sowie eine Handvoll von WPF-Bildschirmen mit mir neue hinzufügen. Ich habe viel Wiederholungscode/Styling in bestehenden WPF-Bildschirmen gesehen und ein einziges Projekt erstellt, um dies zu berücksichtigen - um von allen vorhandenen/zukünftigen WPF-Bildschirmen referenziert zu werden.
Projekt: WpfHelper
- Plattform Ziel: Jede CPU
- Target Framework: .NET Framework 4.6
WpfHelper.dll
eingesetzt...\Trunk\Project\Externals
...\Trunk\Utilities\WpfHelper\WpfHelper\Resources\GlobalResources.xaml
- Build Action: Seite
- Resource enthält generische Arten
I ...\Trunk\Project\Externals\WpfHelper.dll
in sechs Projekten verwiesen haben, Hinzufügen des folgenden Codes zu jedem ihrer Ressourcendateien:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/WpfHelper;Component/Resources/GlobalResources.xaml" />
</ResourceDictionary.MergedDictionaries>
Alle Bildschirme sind in ...\Trunk\Project\Plugins
gelegen .
╔══════════╦═════════════════╦═════════════════╦══════════════════╦════════════════════════════════════════════════╗
║ ║ Resource Works? ║ Platform Target ║ Target Framework ║ Reference File Path ║
╠══════════╬═════════════════╬═════════════════╬══════════════════╬════════════════════════════════════════════════╣
║ Project1 ║ Succeeded ║ Any CPU ║ .NET 4.6 ║ ...\Project1\Project1\Resources\Resources.xaml ║
║ Project2 ║ Succeeded ║ x86 ║ .NET 4.6 ║ ...\Project2\Project2\Resources\Resources.xaml ║
║ Project3 ║ Succeeded ║ Any CPU ║ .NET 4.6 ║ ...\Project3\Project3\Resources\Resources.xaml ║
║ Project4 ║ Failed ║ x86 ║ .NET 4.6 ║ ...\Project4\Project4\Resources\Resources.xaml ║
║ Project5 ║ Failed ║ x86 ║ .NET 4.6 ║ ...\Project5\Project5\Resources\Resources.xaml ║
║ Project6 ║ Failed ║ Any CPU ║ .NET 4.6 ║ ...\Project6\Project6\Resources\Resources.xaml ║
╚══════════╩═════════════════╩═════════════════╩══════════════════╩════════════════════════════════════════════════╝
Letzte Änderungen
Erst kürzlich verbessern ich von Visual Studios 2013 bis 2015. Etwa zur gleichen Zeit, die anderen Bildschirm-Entwickler all vorhandenen Bildschirm Projektziel Frameworks .NET Framework 4.6 von .NET Framework aufgerüstet 3.5/4.0.
Erfolgreiche Projekte
- verwiesen I
WpfHelper.dll
vor den Letzten Änderungen. - Styles korrekt angewendet zu Design-Zeit und Laufzeit.
gescheiterte Projekte
- I verwiesen
WpfHelper.dll
nach der letzten Änderung. - Stile wurden nur zur Laufzeit korrekt angewendet.
- Während Entwurfszeit wird der Fehler ausgelöst:
ist ein Fehler aufgetreten, während die Ressource Wörterbuch zu finden, "pack: // Anwendung ,,,/WpfHelper; Komponente/Ressourcen/GlobalResources.xaml".
Wert sein kann nicht null
:
- Wo die lokalen
Resources.xaml
verwendet werden, wird die nachfolgenden Fehler ausgelöst. Parametername: Artikel
Was ich versucht habe:
Nach einer umfangreichen Liste von Artikeln und Q & A liest:
- Design Time WPF XAML Resource Dictionaries
- How to load a ResourceDictionary at Design Time in WPF
- Error finding resource dictionary in separate assembly
- Problems loading merged resource dictionaries in .NET 4.0
- Pack URIs in Windows Presentation Foundation
- VS2013: An error occurred while finding the resource dictionary
- An error occurred while finding the resource dictionary
- Error finding merged resource dictionary in another assembly
- Trouble referencing a Resource Dictionary that contains a Merged Dictionary
- WPF VS2013: An error occurred while finding the resource dictionary
- App runs normally but has “errors” during design time: “does not exist in namespace” and “an error occured when finding the resource dictionary”
- Resource Dictionary as Linked File
- Visual Studio 2015 XAML Resource Dictionary Error
Ich habe versucht, alle folgenden ohne Erfolg:
- Projekt ändern Platform Ziel "Any CPU"
- Projekt ändern Zielrahmen von/zu .NET Framework 4.6
- Stellen Sie sicher, dass alle Resource.xaml-Dateien dieselbe Erstellungsaktion (Seite) usw. hatten.
Überprüft die Datei
AssemblyInfo.cs
jedes Projekts. Failing Projekte enthalten (und ich entfernt) folgendes:[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
manuell den temporären Ordner in AppsData, Gereinigt & Rebuilt Projekte gelöscht.
- Projekte erneut geöffnet.
- Neu gestartet.
- Klicken Sie mit der rechten Maustaste auf kopierte
WpfHelper.dll
Referenzen von Arbeitsprojekten und fügen Sie sie in Referenzen fehlender Projekte ein. - Die
WpfHelper.Resources.GlobalResources.xaml
wurde als eine verknüpfte Datei zu den fehlgeschlagenen Projekten hinzugefügt. - Nagge jeder Mitarbeiter.
- Die vollständige URI für Unterwörterbücher hinzugefügt, die in
GlobalResources.xaml
verwendet werden. - Killed the designer und das Projekt neu erstellt.
Ich bin aus Ideen und verloren in der Forschung. Ich habe templated eine der Arbeitslösungen und verwendet, dass für die Erstellung neuer Bildschirme - das schafft neue Bildschirme, die zur Entwurfszeit erfolgreich angezeigt werden. Es ist etwas über diese bereits bestehenden Bildschirme. Wie kann ich mit den fehlgeschlagenen Projekten gestylte Ressourcen zur Entwurfszeit korrekt anzeigen?
Sie könnten dieses Problem lösen? – Olga
@ Olga Leider wurde dies nie gelöst. Es hat das Ändern der GUI der Bildschirmschirme viel zeitaufwändiger gemacht. – OhBeWise
Ich wünschte, ich könnte helfen. Dies ist ein konsistentes Problem für ein Projekt von beliebiger Komplexität. – dex3703