14 Stimmen

Unity-Anwendungssperre 2.0 - Der angegebene Assembly-Name oder Codebase war ungültig

Schnittstellen (Im Assembly namens "Schnittstellen". Im Projekt: - Schnittstellen)

namespace Interfaces
{
    public interface IDoSomeWork1
    {
        string DoSomeWork1();
    }
}

namespace Interfaces
{
    public interface IDoSomeWork2
    {
        string DoSomeWork2();
    }
}

Abhängigkeiten (Im Assembly namens "Entitäten". Im Projekt: - Entitäten)

namespace Entities
{
    public class ClassB : IDoSomeWork1
    {
        public string DoSomeWork1()
        {
            return this.ToString();
        }
    }
}

namespace Entities
{
    public class ClassC : IDoSomeWork2
    {
        public string DoSomeWork2()
        {
            return this.ToString();
        }
    }
}

Klasse (Im Projekt: - 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 (In einem Konsolenanwendungsprojekt: - ConsoleUsingUnity)

Der Client (In einem Konsolenanwendungsprojekt: - ConsoleUsingUnity)

public class Class1
    {
        static void Main(string[] args)
        {
            IUnityContainer container = new UnityContainer();

            // Aus der Konfigurationsdatei laden
            UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
            section.Configure(container);

            ClassA classA = container.Resolve();
            classA.SomeMethodInClassA();
        }
    }

Und wenn ich den Client ausführe, erhalte ich den folgenden Fehler bei section.Configure(container);:-

Der angegebene Assemblyname oder der Codebase war ungültig. (Ausnahme von HRESULT: 0x80131047)

Ich bin mir nicht sicher, ob etwas mit der Konfiguration oder dem Typ falsch ist. Kann mir bitte jemand den Fehler hier aufzeigen?

0voto

user1451020 Punkte 5

Bitte stellen Sie sicher, dass Sie Verweis auf die fehlende Assembly im Projekt hinzugefügt haben, in dem sich Ihre web.config-Datei befindet.

Das hatte ich übersehen. Ich hatte bereits diese Assembly-Verweise im Projekt hinzugefügt, das Unity verwendet, um die Klasse aufzulösen, aber vergessen, sie im übergeordneten Projekt, in dem die Konfigurationsdatei abgelegt war, hinzuzufügen. Das hat mein Problem gelöst.

0voto

FERV Punkte 41

Funktioniert so

Dim dllData = System.IO.File.ReadAllBytes(dllFullPath)
Dim asb As System.Reflection.Assembly

asb = System.Reflection.Assembly.Load(dllData)

Dim cls As Object = asb.CreateInstance("namespace.class")

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X