Die Technik zum Hinzufügen eines Verweises auf die COM-Interoperabilität von Office in Visual Studio besteht darin, zu gehen:
- Referenzen
- Referenz hinzufügen
- Wählen Sie die COM Registerkarte
- Wählen Sie Microsoft Office 11.0 Objekt-Bibliothek
Und wie von Zauberhand erscheint der Name der Referenz:
Microsoft.Office.Core
Le site Project.csproj
zeigt die Details der Referenz:
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
Das Projekt wird in die Versionsverwaltung eingecheckt, und alles ist gut.
Dann wird ein Entwickler mit Büro 2007 holt das Projekt aus der Versionskontrolle und kann es nicht bauen, weil ein solcher Verweis nicht existiert.
Er (d. h. ich) checkt die .csproj-Datei aus, löscht den Verweis auf
Microsoft Office 11.0 Object Library
und fügt die COM-Referenz erneut ein als
Microsoft Office 12.0 Object Library
Und wie von Zauberhand taucht ein namentlicher Verweis auf:
Microsoft.Office.Core
Le site Project.csproj
zeigt die Details der Referenz:
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>4</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
Das Projekt wird in die Versionsverwaltung eingecheckt, und alles ist gut.
Dann wird ein Entwickler mit Büro 2003 holt das Projekt aus der Versionskontrolle und kann es nicht bauen, weil ein solcher Verweis nicht existiert.
Er (d. h. nicht ich) checkt die .csproj-Datei aus, löscht den Verweis auf
Microsoft Office 12.0 Object Library
und fügt die COM-Referenz erneut ein als
Microsoft Office 11.0 Object Library
Und wie von Zauberhand taucht ein namentlicher Verweis auf:
Microsoft.Office.Core
Le site Project.csproj
zeigt die Details der Referenz:
<COMReference Include="Microsoft.Office.Core">
<Guid>{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}</Guid>
<VersionMajor>2</VersionMajor>
<VersionMinor>3</VersionMinor>
<Lcid>0</Lcid>
<WrapperTool>primary</WrapperTool>
<Isolated>False</Isolated>
</COMReference>
Das Projekt wird in die Versionskontrolle eingecheckt, und alles ist gut.
Dann wird das Projekt erstellt, auf CDs und an die Kunden versandt, die eine Büro 2007 .
Und nicht alles ist gut.
Früher (d.h. vor der .NET dll-Hölle) haben wir die Office-Objekte mit einer Versionsunabhängige ProgID d.h.:
"Excel.Application"
die sich auflöst in eine clsid des installierten Office, z.B.
{00024500-0000-0000-C000-000000000046}
aus denen dann durch einen Aufruf von COM eine Klasse konstruiert wird (sprachlich-natürlicher Pseudocode):
public IUnknown CreateOleObject(string className)
{
IUnknown unk;
Clsid classID = ProgIDToClassID(className);
CoCreateInstance(classID, null,
CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER,
IUnknown, out unk);
return unk;
}
Fragen
1) Welches ist die bewährte Technik zur Automatisierung der installierten Office-Anwendungen?
2) Was sind die Office 2003 Primäre Interop-Assemblys nützlich für?
3) Wenn ich die Office 2003 Primary Interop Assemblies verwende, muss ich dann Office 2003 installiert haben?
4) Wenn ich mit den Office 2003 Primary Interop Assemblies baue, sind meine Kunden dann für immer an Office 20003 gebunden?
5) Gibt es irgendwelche Büro 2007 Primäre Interop-Baugruppen ?
6) Wenn ich die Office 2007 Primary Interop Assemblies installiere, muss ich dann Office 2007 installiert haben?
7) Was ist falsch an der Verwendung von Standard-COM-Interop zur Steuerung von Excel, Word oder Outlook? z.B.:
[ComImport]
[Guid("00024500-0000-0000-C000-000000000046")]
public class Excel
{
}
8) Was erreicht man, wenn man eine
- Referenz zu Artikeln auf der COM-Registerkarte ,
- im Gegensatz zur Verwendung von [ComImport],
- im Gegensatz zur Verwendung der Office 2007 Primäre Interop-Assemblys ?
9) Ist das Hinzufügen eines Verweises mit der COM-Registerkarte identisch mit der Verwendung von COM-Interoperabilität mit der Ausnahme, dass es eine Typenbibliothek bevor Sie es sehen können?
10) Sind die primären Interop-Assemblies von Office 2003 abwärts und aufwärts kompatibel mit: - Office 14 - Office 2007 - Office 2003 - Office XP - Office 2000 - Büro 97 - Büro 95
Wenn ein Kunde und ein Entwickler eine neue Version von Office installiert, wird diese dann noch funktionieren?
11) Müssen wir die Office 2003 Primary Interop Assemblies mit unserer Anwendung ausliefern?
12) Muss der Kunde die Office 2003 Primary Interop Assemblies installieren, bevor er unsere Anwendung nutzen kann?
13) Wenn ein Kunde die Office 2003 Primary Interop Assemblies installiert, muss er dann über Büro installiert?
14) Wenn ein Kunde die Office 2003 Primary Interop Assemblies installiert, muss er dann auch Office 2003 installiert?
15) Handelt es sich bei den Office 2003 Primary Interop Assemblies um eine kostenlose, einfache, weiterverteilbare Version von Office 2003?
16) Wenn auf meinem Entwicklungsrechner Office 2007 installiert ist, kann ich dann die Office 2003 PIAs verwenden und an einen Kunden mit installiertem Office XP liefern?
0 Stimmen
Sorry, ich kann nicht upvoten, keine Stimmen mehr. Aber es ist sicherlich würdig.