web-dev-qa-db-fra.com

Erreur de construction inconnue Impossible de résoudre la dépendance à System.Windows

Je viens de télécharger le code source de PoshConsole et je tentais de construire la solution. J'ai d'abord eu deux problèmes - 

  1. le System.Interactivity.dll n'a pas pu être résolu. J'ai installé Blend 4 SDK et ce problème a été résolu.

  2. Erreur de construction inconnue - Impossible de résoudre la dépendance à System.Windows

À l'heure actuelle, chaque fois que j'essaie de construire le projet, l'erreur suivante s'affiche dans deux projets de la solution et je n'ai pas été en mesure de trouver une solution après quelques recherches sur Google.

Impossible de résoudre la dépendance dans System.Windows, Version = 2.0.5.0, Culture = neutre, PublicKeyToken = 7cec85d7bea7798e ' car il n'a pas été préchargé. Lorsque vous utilisez les API ReflectionOnly, les assemblages dépendants doivent être préchargés ou chargés à la demande via l'événement ReflectionOnlyAssemblyResolve.

35
gprasant

J'ai reçu ce message d'erreur pour un autre assemblage (non-GAC, personnalisé).

Dans mon cas, la situation était la suivante:

  • Assembly X contient la classe A
  • L'assemblage Y contient la classe B, qui hérite de A
  • Assembly Z contient un modèle de données pour la classe B

Y référencé X, Z référé Y.

Le message d'erreur pointait vers la ligne du modèle de données dans Z où B était référencé et indiquait que X ne pouvait pas être chargé.

La solution consistait à faire également référence à X par Z. Apparemment, le compilateur ne peut pas résoudre cette référence transitive pour charger seul les assemblys requis.

43
O. R. Mapper

Cette erreur signifie généralement que vous avez ajouté une référence à un assemblage Silverlight dans un projet WPF - les deux ne peuvent pas coexister.

Voir: Erreurs lors de la référence à la bibliothèque de classes Silverlight à partir d'une application WPF

18
Chris Hines

Je voudrais ajouter quelques informations en plus de la réponse de O. R. Mapper qui suggère d'ajouter une référence à Assembly qui est indiquée par l'erreur du compilateur.

J'ai rencontré le même problème en travaillant sur un projet WPF. Compte tenu de la relation X, Y, Z présentée dans la réponse, dans mon cas, cela se produit lorsque je lie des propriétés de types de X à une vue utilisée par le modèle de données de Z. Cela ne se produit donc pas pour tous les assemblys qui sont référencés par Z, mais uniquement ceux qui exposent leurs types dans les vues Z. Dans mon cas, je liais SelectedItem d’une ComboBox à une enum déclarée dans Z.

Vous pouvez restructurer ces types en objets et le problème disparaît si vous souhaitez réellement conserver les références comme ils le devraient, en particulier si vous utilisez MVVM. De plus, dans ViewModel, j'expose les propriétés qui enveloppent les propriétés des objets utilisés, car ils ne sont peut-être pas compatibles avec View.

J'espère que cela t'aides.

0
MatrixRonny

Je vais me lancer et répondre à cette vieille question, au cas où quelqu'un se heurterait au même problème.

Je travaillais récemment sur un programme existant et j'ai eu cette erreur. La solution n'était pas évidente.

Problème

L'un des packages NuGet référencé a été créé pour un ensemble de bibliothèques internes et stocké dans le référentiel NuGet interne.

Les applications compilées correctement sur VS2013, en raison de toutes les références NuGet ayant dans les fichiers de projet, directement aux bibliothèques.

Lorsque ces références ont été modifiées en (Ne prend pas en charge HintPath), bon nombre de ces packages NuGet n'ont pas été créés selon nuspec. Il n'y avait pas de dossier lib.

Les paquetages ont été refaits pour suivre la spécification, mais plusieurs paquets contenaient d'anciennes bibliothèques Silverlight. Ces bibliothèques étaient à l'origine de l'erreur.

Solution

Après nuspec, des sous-dossiers ont été créés dans le dossier lib: net45 et sl4. .NET4.5 et Silverlight4.0 respectivement.

Lorsque les packages ont été remplacés par les nouveaux, les builds ont bien fonctionné. Indépendamment de la version du fichier de projet.

TL; DR

Ancienne structure nupkg:

Package.1.0.0.nupkg
   - Library.Net40.dll
   - Library.Sl4.dll

Nouvelle structure nupkg:

Package.1.0.1.nupkg
    - lib
        - net45
            - Library.dll
        - sl4.0
            - Library.dll
0
Victor Procure