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.

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

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:

  • Sie verfügen über eine Anwendung, die mithilfe eines .NET Framework 4.0-basierten Projekts in Microsoft Visual Studio erstellt wird.

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

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

  • Sie richten das Projekt erneut auf die .NET Framework 4.5.x in Visual Studio aus.

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 folgendermaßen aussieht:

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

Hinweis

Dieses Problem tritt nur auf dem Computer auf, auf dem die .NET Framework 4.0, die .NET Framework 4.5 oder die .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.

Für die .NET Framework 4.0 müssen bestimmte Assemblys geladen werden, wenn Sie Typen aus einer Typbibliothek auflösen, die auf eine primäre Interopassembly verweist. Dies war im .NET Framework 2.0 jedoch nicht der Fall. 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 Importeur in Visual Studio ausgeführt wird, kann der Importeur daher nicht alle Verweise für dieses ActiveX Steuerelement auflösen und vorab laden.

Problemumgehung

Um dieses Problem zu umgehen, erstellen Sie die Interopassemblys mithilfe von AxImp.exe. Die fehlermeldung, die im Abschnitt "Symptome" erwähnt wird, weist beispielsweise darauf hin, dass die erforderliche Microsoft Office-Assembly Version 12.0 ist. Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:

  1. Suchen Sie die erforderliche Office Assembly im globalen Assemblycache (Global Assembly Cache, GAC).

  2. Wählen Sie den Pfad der Office-Version aus, die in der Fehlermeldung erwähnt wird. Es wird etwa wie C:\Windows\assembly\GAC\office\12.0.0.0__71e9bce111e9429c folgt aussehen.

  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 die generierten Interopassemblys mithilfe des Add References Features hinzu.

Hinweis

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

Weitere Informationen

AxImp.exe ist ein Befehlszeilentool und steht mit dem Visual Studio zur Verfügung. Dieses Tool akzeptiert Verweisassemblys als Befehlszeilenargumente. Daher kann dieses Tool die zusätzlichen Assemblys laden, die vom .NET Framework 4.0 erwartet werden.