none
Directx unter Visual C# 2010 Express einbinden RRS feed

  • Frage

  • Hallo,

    ich möchte mit visual C# 2010 directX verwenden.

    Dafür soll man unter anderem folgende Zeilen benutzen:

    using Microsoft.DirectX;
    using Microsoft.DirectX.Direct3D;
    

    Dann soll man noch ein Verweis auf die DLL's Microsoft.DirectX.dll und Microsoft.DirectX.Direct3D.dll machen. Das habe ich getan.

    Wenn ich das ganze nun ausführen will bekomme ich diese Fehlermeldung:

     

    "Die Assembly im gemischten Modus wurde während Version v1.1.4322 der Laufzeit erstellt und kann nicht während der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden."

    "Stellen Sie sicher, dass die Datei eine gültige .Net Framework-Assembly ist."


    Was kann man da tun?

     

    TS23

    Sonntag, 25. Juli 2010 15:32

Antworten

Alle Antworten

  • Hallo,

    Dann soll man noch ein Verweis auf die DLL's Microsoft.DirectX.dll und Microsoft.DirectX.Direct3D.dll machen. Das habe ich getan.

    Wenn ich das ganze nun ausführen will bekomme ich diese Fehlermeldung:

    "Die Assembly im gemischten Modus wurde während Version v1.1.4322 der Laufzeit erstellt und kann nicht während der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden."

    Schau mal, ob Du folgende Lösung bei Dir anwenden kannst:

    http://stackoverflow.com/questions/1751179/managed-directx-running-from-net-framework-4-0-app-dont-hunt


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Sonntag, 25. Juli 2010 16:01
  • Und wo genau soll man das dort vorgeschlagene eintragen?
    Sonntag, 25. Juli 2010 16:46
  • Hallo TS,

    Hier zunächst mögliche Einstellungen bzgl. paralleler Ausführung mehrere CLR Versionen gleichzeitig:

    [Prozessinterne parallele Ausführung]
    http://msdn.microsoft.com/de-de/library/ee518876.aspx

    weiterhin .. auf .NET 1.1 sollte man heutzutage nicht mehr "bauen".
    Ggf. unter Projekt-Eigenschaften das Zielframework anpassen:

    [VS2010 Tips #13: How to do multi-targeting in Visual Studio 2010 Express edition · Ferry Meidianto]
    http://blog.meidianto.com/2010/07/01/vs2010-tips-13-how-to-do-multi-targeting-in-visual-studio-2010-express-edition/

    Dann gibt es je nach XNA oder DirectX-Version ein paar Dinge .. :

    [Using Visual C# Express 2010 and can't reference DirectX libraries... - XNA Community Forums]
    http://forums.xna.com/forums/t/55140.aspx

    Ausserhalb der Frage erwähnt ... : das aktuelle DirectX SDK ist:

    [Download details: DirectX SDK - (June 2010)]
    http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=3021d52b-514e-41d3-ad02-438a3ba730ba

    [DirectX SDK Samples]
    http://msdn.microsoft.com/en-us/directx/ee623005.aspx

     


    ciao Frank
    Sonntag, 25. Juli 2010 16:49
  • Hallo TS,

    in der Anwendungs-Konfigurationsdatei. Normal "app.config".
    Hier - wie gesagt - Details:

    [Prozessinterne parallele Ausführung]
    http://msdn.microsoft.com/de-de/library/ee518876.aspx

    Beachte - aus der Praxis heraus - die Reihenfolge der Einträge spielt da immer eine Rolle. Achte darauf, dass die ConfigSections (falls vorhanden) am Anfang sind.


    ciao Frank
    Sonntag, 25. Juli 2010 17:02
  • das mit der app.config hab ich probiert, klappt leider nicht.

    Weiß nicht ob das was damit zu tun hat aber: ich kann SDK 2010(Jun) nicht installieren, weil angeblich die Microsoft.directx.*.dll's von einem anderen prozess genutzt werden.

    Sonntag, 25. Juli 2010 18:04
  • Unter Visual C# express 2008 geht das ganze.

    Ich glaube ich nutze jetzt auch weiterhin die 2008 version, da die 2010ner ja eh nur 90 Tage lauffähig ist.

    Trotzdem vielen Dank für eure Antworten.

     

    TS23

    • Als Antwort markiert TS23 Sonntag, 25. Juli 2010 20:42
    • Tag als Antwort aufgehoben TS23 Montag, 26. Juli 2010 12:39
    Sonntag, 25. Juli 2010 20:42
  • Hallo TS,

    > die 2010ner ja eh nur 90 Tage lauffähig ist.

    nein, die ist VS 2010 Express ist frei. Du hast nur Registrierungspflicht nach 30 Tagen.
    Wie auch bei den vorangegangenen Expressversionen muss die Software nach 30 Tagen Benutzung registriert werden. Die Registrierung erfolgt mittels Windows Live ID und ist kostenlos und mit keinerlei Verpflichtungen außer der Einhaltung der Lizenzbestimmungen, verbunden. Nach vollzogenem Registrierungsprozess bekommt man das Angebot VS 2010 Professional für 90 Tage zu testen.

     


    ciao Frank
    Montag, 26. Juli 2010 07:10
  • Hallo,

    Unter Visual C# express 2008 geht das ganze.

    es würde auch mit der 2010er Version gehen, mit der Anpassung der app.config oder die Änderung des Zielframework von 4.0 auf 2.0 bzw. 3.5.

    da die 2010ner ja eh nur 90 Tage lauffähig ist.

    Das hat Frank ja bereits erklärt.


    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Montag, 26. Juli 2010 07:49
  • Das mit den 90 Tagen hab ich dann wohl falsch verstanden, registriert ist es aber schon.

     

    Wenn ich in der App.config

    <?xml version="1.0"?>
    <configuration>
    <startup><supportedRuntime version="v3.5" sku=".NETFramework,Version=v3.5"/><br/>
    </startup></configuration>
    
    schreibe statt

    <?xml version="1.0"?>
    <configuration>
    <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/><br/>
    </startup></configuration>
    

    kommt beim laden des Projektes eine Meldung, das ich .Net Framework 3.5 installieren soll, obwohl es schon installiert ist. Ich habe bei "Zielframework anpassen" auch nur die wahl zwischen 4.0 und 4.0 Client Profiel.

    beim Verweis hinzufügen tauchen die Verweise bei der 2010 version im gegensatz zur 2008 auch nicht unter ".NET" auf.

     

    TS23

    Montag, 26. Juli 2010 12:58
  • Hallo,

    Wenn ich in der App.config

    <?xml version="1.0"?>
    <configuration>
    <startup><supportedRuntime version="v3.5" sku=".NETFramework,Version=v3.5"/><br/>
    </startup></configuration>
     
    schreibe [...]

    kommt beim laden des Projektes eine Meldung, das ich .Net Framework 3.5 installieren soll, obwohl es schon installiert ist.

    Für .NET 3.5 muss der Eintrag wie folgt lauten:
    <?xml version="1.0"?>
    <configuration>
      <startup><supportedRuntime version="v2.0.50727"/></startup>
    </configuration>
    

    Hintergrund: .NET 3.5 hat keine eigene Runtime, sondern ist quasi ein Add-On auf das Framework 2.0.

    Ich habe bei "Zielframework anpassen" auch nur die wahl zwischen 4.0 und 4.0 Client Profiel.


    Ich habe gerade kein installiertes VC# 2010 Express zur Hand, bin aber der Meinung, dass Du dort auch die Frameworkversionen 2.0 bzw. 3.5 auswählen können solltest.

    Thorsten Dörfler
    Microsoft MVP Visual Basic
    vb-faq.de
    Montag, 26. Juli 2010 13:45
  • Tut mir leid, dass ich hier "Leichen fleddere", aber ich habe genau dasselbe Problem. Ich kenne mich nicht so gut mit Assemblys aus, da das zum Glück eigentlich Visual Studio 2010 für mich tut. Ich habe bereits bei den Projekteigenschaften den Zielframework auf 3.5 geändert und bekomme dabei das Ergebnis, das zuletzt genannt wurde. Wenn ich aber mein Programm starte, bekomme ich Fehlermeldungen, dass A) einige Elemente wie "version" im Assembly nicht erkannt/gefunden werden, und dass B) einige Zeilen Code in der von mir nicht veränderten .resx-Datei nicht "Win32-zulässig" sind. Wie kann es sein, dass im Assembly gängige Begriffe nicht erkannt werden? Muss ich da auch importieren? Und bleibt mir nichts anderes übrig, als in die .resx-Datei reinzupfuschen, oder gibts da eine elegantere Lösung? Vielen Dank im Voraus.
    Mittwoch, 3. November 2010 10:12
  • Habe dasselbe Problem:

    Habe im "4.0 Framework Client Profile" eine Anwendung geschrieben die in Kombination mit Microsoft.DirectX.DirectInput einen Assembly Fehler in VS2010 herbeiführt.

    Fehlermeldung:

    System.IO.FileLoadException: Die Assembly im gemischten Modus wurde während Version v1.1.4322 der Laufzeit erstellt und kann nicht während der 4.0-Laufzeit ohne zusätzliche Konfigurationsinformationen geladen werden. 

     

    Anschließend bin ich auf dieses Forum gestoßen und habe wie oben beschrieben zuerst unter Projekt-Eigenschaften das Framework auf 3.5 geändert. Jetzt kann ich jedoch mein Projekt nicht mehr ausführen, da meine Verweise nicht mehr erkannt weden. Dabei handelt es sich um folgende:

    Microsoft.CSharp

    Microsoft.Xna.Framework.Game

     

    Dann habe ich Versucht im app.config die zu modifizieren:

    <?xml version="1.0"?><br/>
    <configuration><br/>
     <startup><supportedRuntime version="v2.0.50727"/></startup><br/>
    </configuration><br/>
    
    

    Das hat mir aber auch nicht weiter geholfen.

     

    Bitte um Hilfe. Danke im Voraus.

    Freitag, 5. November 2010 11:16
  • Hallo,

    der Eintrag ist so nicht vollständig, siehe
    What does 'useLegacyV2RuntimeActivationPolicy' do in the .NET 4 config?

    und bei den Projekt-Eigenschaften weiterhin .NET 4.0 verwenden.

    Gruß Elmar

     

    Montag, 8. November 2010 00:14
  • Hatte dasselbe Problem mit einer eigenen Assembly, die für .Net 2.0 geschrieben ist.

    Mit ".Net 4.0 Framework" funktioniert es, mit "4.0 Framework Client Profile" nicht.

    Was ist überhaupt dieses Client Profile?

     

    Gruß Fred

    Donnerstag, 18. November 2010 09:37
  • Hallo Fred,

    in Kurzfassung: Dort ist alles weggelassen, was man typischerweise nur für eine
    Server-Anwendung benötigt, bzw. benötigen sollte (was nicht immer das gleiche ist ;-)

    Detaillierter siehe .NET Framework Client Profile

    In Deinem Falle dürftest Du eine Assembly verwenden, die dort nicht enthalten ist.

    Gruß Elmar

    Donnerstag, 18. November 2010 10:00
  • Vielen Dank!!!

    Nachdem ich den "useLegacy"-Teil wie im Link eingebaut habe, hat alles ohne Probleme funktioniert. Danke für den Hinweis!

    Mittwoch, 1. Dezember 2010 13:37