Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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:
Suchen Sie die erforderliche Office-Assembly im globalen Assemblycache (GAC).
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
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>
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.