L'unité de l'application bloc 2.0 - Le nom de l'assembly ou le code est invalide
Interfaces (Dans l'assemblée a nommé des "Interfaces". En projet :- Interfaces)
namespace Interfaces
{
public interface IDoSomeWork1
{
string DoSomeWork1();
}
}
namespace Interfaces
{
public interface IDoSomeWork2
{
string DoSomeWork2();
}
}
Dépendances (À l'assemblée nommée "Entités". En projet :- Entités)
namespace Entities
{
public class ClassB : IDoSomeWork1
{
public string DoSomeWork1()
{
return this.ToString();
}
}
}
namespace Entities
{
public class ClassC : IDoSomeWork2
{
public string DoSomeWork2()
{
return this.ToString();
}
}
}
De classe (du projet :- UsingUnity)
public class ClassA
{
[Dependency]
public IDoSomeWork1 DoSomeWork1 { get; set; }
[Dependency]
public IDoSomeWork2 DoSomeWork2 { get; set; }
public void SomeMethodInClassA()
{
Console.WriteLine(DoSomeWork1.DoSomeWork1());
Console.WriteLine(DoSomeWork2.DoSomeWork2());
}
}
App.Config (Dans un projet d'application console :- ConsoleUsingUnity)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity"
type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,
Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity>
<containers>
<container>
<types>
<type type="Interfaces.IDoSomeWork1, Interfaces"
mapTo="Entities.ClassB, Entities" />
<type type="Interfaces.IDoSomeWork2, Interfaces"
mapTo="Entities.ClassC, Entities" />
</types>
</container>
</containers>
</unity>
</configuration>
Le client (Dans un projet d'application console :- ConsoleUsingUnity)
public class Class1
{
static void Main(string[] args)
{
IUnityContainer container = new UnityContainer();
//Load from config file
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(container);
ClassA classA = container.Resolve<ClassA>();
classA.SomeMethodInClassA();
}
}
Et quand je lance le client, j'obtiens l'erreur suivante à la section.Configurer(conteneur);:-
Le nom de l'assembly ou de la base de code
n'était pas valide. (Exception de HRESULT:
0x80131047)
Je ne suis pas sûr Si il ya quelque chose de mal avec la config ou le type. Quelqu'un pourrait s'il vous plaît signaler ici l'erreur?
OriginalL'auteur Ashish Gupta | 2010-10-17
Vous devez vous connecter pour publier un commentaire.
Au cas où quelqu'un d'autre n'a le même problème - j'avais aussi cette erreur, mais a eu un problème un peu différent. J'ai essayé de charger un assembly qui existe à l'évidence comme suit:
Après beaucoup de tâtonnements, j'ai compris que vous n'êtes pas censé passer le chemin et vous avez certainement ne sont pas censés inclure
.dll
extension. La suite de ma question:J'espère que ça aide quelqu'un d'autre, tôt ou tard!
Assembly.LoadFrom
avec le chemin d'accès.m'a sauvé beaucoup de temps!
Je vous remercie
OriginalL'auteur drew_w
Avant de me répondre à ma question, je dois dire que le code affiché ci-dessus ne me permettent pas de problème (erreur de build, etc.). Il m'a juste l'erreur que j'ai indiqué dans ma question. Le problème avec l'Unité à ce point de temps, c'est qu'Il ne fournit pas de l'assemblage ou de l'un des types de l'assemblée n'a pas pu être chargé. C'est un demande de fonctionnalité.
Dans mon cas, C'était un manque de problème de montage. Je n'ai pas de référence des Entités d'assemblage dans l'application client du projet. Il semble que les "Entités" assemblée pourrait être résolue qu'à l'exécution (car il ne m'a laissé aucune erreur de compilation). Cependant, l'erreur d'exécution n'était pas aussi utile à tous.
J'ai eu un coup d'oeil un Fusion visionneuse du Journal (Il devrait être dans les .NET SDK dossier). Ce qu'est un joyau de l'utilitaire, Il est. Il peut se connecter tous les types de montage fixations (tous ou seulement d'échecs), et Il donne une très soigné description de l'assemblage n'a pas pu charger. Très utile!
Alors, la prochaine fois, vous obtenez ce "Le nom de l'assembly ou le code est invalide" s'affiche, essayez de Fusion de la Visionneuse de Journaux. Il l'habitude de vous aider à trouver les types ne pouvait pas être chargé. Cependant,au moins vous serez sûr que tous vos assemblées se sont chargés correctement.
Assurez-vous que c'est quelque chose! Il peut être un peu fastidieux à mettre en place et le processus que vous avez besoin à voir charger les assemblages doivent être redémarré une fois les réglages dans FusionLog sont appliquées.
OriginalL'auteur Ashish Gupta
Si vous connectez le domaine AssemblyResolve événement que vous pouvez obtenir de l'assemblée qui a échoué à lier.
OriginalL'auteur PaulB
Il ya une meilleure façon maintenant!
L'unité a une nouvelle version (actuellement 2.1.505.2) rapporte les détails et vous permet d'aller au fond de celui-ci immédiatement.
Vous pouvez trouver les fichiers binaires et le code source ici: http://unity.codeplex.com/releases
OriginalL'auteur Mazrick
J'ai trouvé que le moins de temps consommer méthode de recherche qui
Type
exactement failed to bind est le suivant:DEBUG
version deUnity
etUnity.Configuration
(si votre projet utilise plus de l'unité des assemblages, à construire)Debug > Exceptions
et assurez-vous queCommon Language Runtime Exceptions
a une case à cocher dans laThrown
colonne.Maintenant aller de l'accident qui chose. L'exécution s'arrête dans Unitys'
TypeResolverImpl.SearchAssemblies
méthode ettypeNameOrAlias
paramètre contiendra la réponse!OriginalL'auteur mdonatas
fonctionne comme ceci
OriginalL'auteur FERV
Assurez-vous que vous avez ajouté les références d'assembly à la disparition de l'assemblée dans le projet où votre site web.fichier de configuration existe.
J'ai été absent. J'ai déjà ajouté ces références d'assembly dans le projet qui a été à l'aide de l'Unité de résoudre la classe, mais il a manqué de l'ajouter dans le projet parent où le fichier de configuration a été situé. Cela a résolu mon problème.
OriginalL'auteur user1451020