Freigeben über


Fehler beim Erstellen eines Projekts in Visual Studio

Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem Sie kein .NET Framework-basiertes Projekt in Visual Studio erstellen können.

Originalproduktversion: .NET Framework 4.5
Ursprüngliche KB-Nummer: 2956788

Symptome

Betrachten Sie das folgende Szenario:

  • Sie verfügen über eine Anwendung, die mit einem .NET Framework 4.0-basierten Projekt in Microsoft Visual Studio erstellt wird.

  • Diese Anwendung verfügt über ein ActiveX-Steuerelement von Visual Basic 6.0.

  • Dieses Steuerelement verweist auf eine primäre Interopassemblydatei von Office. Beispiel: eine office.dll Datei.

  • Sie können das Projekt erneut auf .NET Framework 4.5.x in Visual Studio ausrichten.

In diesem Szenario kann dieses Buildprogramm beim Erstellen des Projekts die Interopassembly für das Steuerelement nicht laden. Darüber hinaus erhalten Sie eine Fehlermeldung, die etwa wie folgt aussieht:

AxImp-Fehler: Abhängigkeit von Assembly 'office, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce11e9429c' kann nicht behoben werden, da sie nicht vorinstalliert wurde. Bei Verwendung der ReflectionOnly-APIs müssen abhängige Assemblys über das ReflectionOnlyAssemblyResolve-Ereignis vorab geladen oder bei Bedarf geladen werden.

Hinweis

Dieses Problem tritt nur auf dem Computer auf, auf dem .NET Framework 4.0, .NET Framework 4.5 oder .NET Framework 4.5.1 und das Microsoft Office-Produkt installiert sind.

Ursache

Dieses Problem tritt aufgrund einer Entwurfsänderung zwischen common language runtime (CLR) 2.0 und CLR 4.0 auf, wie die Typbibliotheken und Abhängigkeiten geladen werden.

.NET Framework 4.0 benötigt bestimmte Assemblys, die geladen werden müssen, wenn Sie Typen aus einer Typbibliothek auflösen, die auf eine primäre Interopassembly verweist. Dies war jedoch nicht der Fall in .NET Framework 2.0. Der ActiveX-Importer hat das Verhalten zwischen .NET Framework 2.0 und Framework 4.0 nicht geändert. Diese Entwurfsänderung verhindert die Generierung der Interopassemblys. Wenn activeX-Importer in Visual Studio ausgeführt wird, kann der Importeur daher nicht alle Verweise für dieses ActiveX-Steuerelement auflösen und vorab laden.

Zwischenlösung

Um dieses Problem zu umgehen, erstellen Sie die Interopassemblys mithilfe von AxImp.exe. Die im Abschnitt "Symptome" erwähnte Fehlermeldung zeigt beispielsweise an, dass die erforderliche Microsoft Office-Assembly Version 12.0 ist. Gehen Sie folgendermaßen vor, um das Problem zu beheben:

  1. Suchen Sie die erforderliche Office-Assembly im globalen Assemblycache (GAC).

  2. Wählen Sie den Pfad der Office-Version aus, die in der Fehlermeldung erwähnt wird. Dies sollte Folgendem ähneln: C:\Windows\assembly\GAC\office\12.0.0.0__71e9bce111e9429c

  3. Führen Sie den folgenden Befehl an der Visual Studio-Eingabeaufforderung aus, um die neuen Interopassemblys zu generieren:

    aximp < **Name of Ocx** > /out: < **Interop assembly name** > /rcw: <C:\Windows\assembly\GAC\office\12.0.0.0__71e9bce111e9429c\office.dll>
    
  4. Fügen Sie dem Visual Studio-Projekt mithilfe des Add References Features die generierten Interopassemblys hinzu.

Hinweis

Wenn die primäre Interopassembly von Office nicht auf dem Computer installiert ist, kann das AxImp.exe Tool die Typen weiterhin ohne Unterstützung auflösen, auch wenn sie aus dem Visual Studio-Buildprozess ausgeführt wird.

Mehr Informationen

AxImp.exe ist ein Befehlszeilentool und ist in Visual Studio verfügbar. Dieses Tool akzeptiert Referenzassemblys als Befehlszeilenargumente. Daher kann dieses Tool die zusätzlichen Assemblys laden, die von .NET Framework 4.0 erwartet werden.