Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
NetOffice - Ein versionsunabhängiger Wrapper für MS-Office
seeba
myCSharp.de - Member



Dabei seit:
Beiträge: 76

beantworten | zitieren | melden

Super, vielen Dank. Ich probier' das dann mal! :-)
private Nachricht | Beiträge des Benutzers
..Heinz..
myCSharp.de - Member



Dabei seit:
Beiträge: 135

beantworten | zitieren | melden

Hallo Sebastian,

wie sieht es mit Nuget aus? Ist da etwas geplant?
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

NetOffice Release 1.2

beantworten | zitieren | melden

Ab sofort verfügbar ist:

NetOffice Release 1.2

- IntelliSense zeigt nun zusätzlich für Properties "Get" oder "Get/Set"
- Unterstützung für MS-Project 2007 und 2010
- Deutliche Performance Verbesserung

Ein ausführlicher Performance Vergleich ist nun zusätzlich verfügbar:

Performance Vergleich: Interop, Dynamics, Visual Basic, NetOffice


Geplant für Release 1.3
- Unterstützung für ältere MS-Project Versionen
- Unterstützung für MS-Visio (wurde angefragt)
- Weitere Vorschläge durch Community Feedback willkommen
[offtopic] Die fetten ReleaseTags im Quellcode habe ich entfernt. [/offtopic]
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
MagicAndre1981
myCSharp.de - Member

Avatar #avatar-2623.jpg


Dabei seit:
Beiträge: 913
Herkunft: Nordhausen

beantworten | zitieren | melden

danke, nun noch ein NuGet Package und ich bin glücklich. NuGet ist das beste was ist seit langen bei .Net gibt. Aktuell muss man sich deine Version laden, sie in seinem eigenen Projekt in einem Ordner einfügen sowie in die Versionskontrolle packen. Mit NuGet kann man sich das alles sparen.
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

[offtopic] Hallo,
Ich erkenne den sinvollen Grundgedanken von Nuget und bei den häufigen NetOffice Releases der letzten Zeit wäre das sicher sehr nützlich gewesen. Jedoch habe ich mich nach gründlichem Überlegen dazu entschlossen vorläufig kein Nuget Packet anzubieten da ich mit einigen Aspekten der technischen Umsetzung nicht einverstanden bin. Ich würde das Thema gerne in in einem extra Thread weiter diskutieren sofern du magst. [/offtopic]
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
Diräkt
myCSharp.de - Member



Dabei seit:
Beiträge: 619
Herkunft: Schweiz

beantworten | zitieren | melden

[noch mehr offtopic]

Hallo :)

Ich möchte einfach mal DANKE sagen ! Gute Arbeit ! :)


Beste Grüsse

Diräkt

[/noch mehr offtopic]
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Ab sofort verfügbar ist die NetOffice Developer Toolbox.

Die Developer Toolbox ist ein Productivity Tool für den Office-Entwickler.
Es umfasst die folgenden Funktionalitäten:

- Office Compatibility
- Application Observer
- Registry Editor
- Addin Guard
- Outlook Security


Die Dokumenation befindet sich hier:
Developer Toolbox Online Dokumenation

Ich möchte die einzelnen Funktionen ganz kurz umschreiben.

Office Compatibility

Wer eine Office Lösung entwickelt die mit mehreren oder allen Office Versionen kompatibel sein muss, steht vor dem Problem das er nur die Funktionalitäten ansprechen darf die in allen unterstützen Versionen zur Verfügung stehen. NetOffice bietet daher als einzige API einen entsprechenden Hinweis als IntelliSense Text, während der Entwicklung an, von welcher Office Version die jeweilige Funktionalität unterstützt wird. Auch wenn dieses Feature eine grosse Hilfe darstellt, reicht es in der Praxis nicht aus um sicherzustellen das man mit allen Versionen einer Office Anwendung kompatibel ist. Die Office Compatibility Komponente führt eine statische Code-Analyse mit Hilfe von Mono.Cecil durch und analysiert Assemblies die NetOffice verwenden darauf mit welchen Office Versionen sie kompatibel sind. Eine entsprechende Übersicht hilft dem Entwickler die inkompatiblen Aufrufe zu identifizieren.

Application Observer

Wer über längere Zeit an grösseren Office Lösungen arbeitet kennt das Problem.
Ein Fehler triff auf, der Debugging Prozess wird abgebrochen, vorhandener Cleanup Code wird damit nicht ausgeführt. Die Instanz der Office Anwendung wird nicht beendet und verbleibt im Speicher. Schnell befinden sich innerhalb weniger Minuten viele dieser verwaisten Instanzen im Speicher die via Task-Manager entfernt werden müssen. Der Application Observer überwacht die Anzahl laufender Instanzen von ausgewählten Office Anwendungen und zeigt diese Information auf Wunsch als Tray-Icon an. Darüber hinaus kann man einen systemweiten Hotkey festlegen um diese Instanzen schnell und unkompliziert zu entfernen. Die Hotkey Klasse stammt dabei von MyCSharp. Vielen Dank an Floste. Einen entsprechenden Hinweis im Code und in der About Box habe ich natürlich nicht vergessen.

Registry Editor

Der Registry Editor ist ein technischer und optischer Klon des bekannten Windows Registry Editors. Er bietet jedoch nur die Schlüssel für MS-Office an. Nerviges scrollen wird dadurch überflüssig.

Addin Guard

Entwickler die COMAddins für eine Office Anwendung schreiben haben oft das Problem das Sie nicht sicher sind ob Ihr Addin ordnungsgemäss geladen wird.
Bei einem auftretenden Fehler, z.B. einer fehlenden Abhängigkeit setzen Office Anwendungen das Ladeverhalten von Addins komentarlos zurück oder markieren es als deaktiviert. Viele Entwickler bauen daher MessageBox Ausgaben in ihren Code und prüfen permanent mit nervösem Blick die Registry-Werte Ihres Addins.
Addin Guard schafft hier Abhilfe in dem es das Ladeverhalten von Addins also ihren Aktivierungsstatus überwacht und ein Meldungsfenster oder eine Tray-Benachrichtung anzeigt wenn sich das Ladeverhalten ändert. Auf Wunsch kann Addin Guard das Ladeverhalten auch direkt zurücksetzen.

Outlook Security

Ein Entwickler der MS-Outlook via COM ansprechen bzw. automatisieren möchte steht vor dem Problem das Outlook einen Security Dialog einblendet, der zur Autoriserung auffordert, wenn man auf bestimmte Teile des Objektmodells zugreift. Mit Einführung dieses Sicherheits-Features wurde sehr schnell ein Tool mit dem Namen ClickYes populär das im Hintergrund läuft und diesen Dialog automatisch bestätigt. Outlook Security tut es dem bekannten Tool ClickYes nach indem es diesen Dialog automatisch bestätigt und hat darüber hinaus noch einen weiteren Vorteil. Die tatsächliche Funktionalität ist in das beiliegende Assembly NetOffice.OutlookSecurity.dll ausgelagert. Wer möchte kann dieses Assembly nutzen oder den Source Code direkt einbinden. Ein Addin kann damit seine eigene ClickYes Funktionalität mitbringen und auf dem Zielsystem muss kein extra Tool installiert werden. Wie man das Assembly NetOffice.OutlookSecurity.dll nutzt ist in der Online Dokumentation beschrieben.

Zum Download gehts hier

Die Developer Toolbox benötigt das .NET 4 Framework.
Das Client Profile ist dabei ausreichend.
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von user8744 am .
Attachments
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Für die Toolbox gibt es ein Update(Version 0.8.2) das 2 Bugs in der Office Compatibility Komponente behebt. Der 1.Bug verursachte eine Fehlermeldung während der Assembly Analyse, der 2. Bug verursachte eine falsche Anzeige im Filter-Modus des anschliessenden Reports.

Edit: Gleich noch ein Update(Version 0.8.3) hinterher.
Die Office Compatibility Komponente hat jetzt 73 Test Assemblies erfolgreich passiert. In Version 0.9 wird der detailierte Report der Analyse übersichtlicher und ansprechender aussehen und darüber hinaus auch direkt speicherbar sein
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1928
Herkunft: NRW

beantworten | zitieren | melden

Hallo!

Habe NetOffice heute auch mal getestet: Läuft wirklich toll.

Evtl. noch ein kleiner Hinweis:
Wenn man z.B. Application in einer using-Anweisung verwendet, erwarte ich, dass neben Dispose gegebenenfalls weitere Methoden (z.B. Quit) automatisch aufgerufen werden.

Zusätzlich sollte evtl. auch ein Destructor eingerichtet werden (siehe auch Dispose implementieren und verwenden (IDisposable)), welcher Dispose(false) aufruft.

Ich benutze zwar z.Zt. noch einen eigenen Wrapper, bin aber geneigt, auf NetOffice umzusteigen.
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Danke für deinen Hinweis. Quit() für Applications am Ende eines using Blocks aufzurufen ist eine sinnvolle Sache aber eben auch nur in diesem Context.
Ansonsten darf Quit() nie automatisch aufgerufen werden auch nicht wenn das Objekt vom GC entsorgt wird. Oft genug will man das die Anwendung weiterlebt auch wenn man sich technisch von ihr getrennt hat.

Ich muss erstmal intensiv drüber grübeln.
Das Proxy Management ist eine BasisApi (LateBindingApi.Core) verpackt.
Diese weiss natürlich nichts über irgendwelche Quit Methoden und soll es auch nicht. Möglich wäre es allerdings trotzem, wenn ich den Application Objekten ein zusätzliches Interface(IQuit o.ä.) spendiere. Ich werde nach dem Ende meiner Überlegungen meinen Entwurf hier kurz vorstellen.

In eigener Sache:
Die Developer Toolbox in der Version 0.8.6 ist online mit einer technisch und optischer verbesserten Office Compatibility Komponente.
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Ab sofort verfügbar ist NetOffice 1.3

Neue Features im Überblick:

- Mehr Überladungen für Methoden mit optionalen Parametern
- Einfache Prüfung zur Laufzeit möglich ob ein spezfisches Feature zur Verfügung steht
- Enumeratoren für Listen ohne nativen Enumerator Support
- Integrierte Debug Console
- Verbesserter Beispielcode
- Developer Toolbox 0.9


Mehr Überladungen für Methoden mit optionalen Parametern

NetOffice kann leider keine optionalen Parameter anbieten da viele Methoden Überladungen haben die in unterschiedlichen Office-Versionen definiert sind. Würde NetOffice diese zu einer einzigen Methode mit optionalen Parametern zusammenfassen würde die Information verloren gehen welche Version die jeweilige Methode anbietet. Ich hatte deswegen in der Vergangenheit viel Mail-Verkehr quer über die ganze Welt, Leute die mir Beispielprojekte mit optionalen Parametern geschickt und Vorschläge gemacht haben, vielen Dank dafür. Die Information welche Office Version die jeweilige Methode anbietet wird in NetOffice via XML Dokumentation als IntelliSense angezeigt. Ich möchte diese IntelliSense Unterstützung nicht zugunsten der optionalen Parameter opfern. Ich bin schon ein wenig stolz darauf das versionsunabhängige Office-Entwicklung mit NetOffice nicht einfach nur möglich ist sondern das man hierbei auch aktiv unterstützt wird. Dafür gibt es nun 3 zentrale Features:


1.) Während der Entwicklung durch die XML Dokumentation die anzeigt welche Office Version die jeweilige Funktionalität anbietet

2.) Nach der Entwicklung durch die Developer Toolbox die eine Code Analyse durchführt und dem Entwickler aufzeigt mit welchen Office Versionen sein Code funktioniert

3.) Das neue EntityIsAvailable Feature (siehe unten) das ermöglicht zur Laufzeit zu ermitteln ob eine Funktionalität zur Verfügung steht


Es wäre schade diese besondere Trademark von NetOffice aufzuweichen daher bietet NetOffice keine optionalen Parameter. Als Ersatz für Methoden mit optionalen Parametern bot NetOffice bisher jeweils eine minimale und eine maximale Funktionsüberladung an. In solche Fällen wo Methoden sehr viele optionale Parameter enthalten und der Entwickler nur einen oder wenige davon nutzen wollte ist dies jedoch nicht optimal, daher gibt es nun für Methoden mit optionalen Parametern nun die entsprechend Anzahl an Überladungen wie optionale Parameter existieren. Ich hoffe damit einen adäquaten Ersatz für optionale Parameter hergestellt zu haben.


Einfache Prüfung zur Laufzeit möglich ob ein spezfisches Feature zur Verfügung steht

Oftmals ist es hilfreich und sinnvoll zur Laufzeit zu prüfen ob ein bestimmtes Property oder Methode von der aktuellen Office Version angeboten wird.
Daher bietet jedes Objekt in NetOffice nun die Metode 'bool EntityIsAvailable(string name);' an. Dazu ein Beispiel:

// Neue E-mail in Outlook erstellen
Outlook.MailItem mailItem = outlookApplication.CreateItem(OlItemType.olMailItem) as Outlook.MailItem;

// BodyFormat ist nicht verfügbar in Outlook 2000, wir prüfen zur Laufzeit ob es zur Verfügung steht
if(mailItem.EntityIsAvailable("BodyFormat"))
    mailItem.BodyFormat = OlBodyFormat.olFormatPlain;

mailItem.Body = "kind regards from NetOffice;
mailItem.Subject = "Hello";
mailItem.Display();
mailItem.Close(OlInspectorClose.olDiscard);



Enumeratoren für Listen ohne nativen Enumerator Support

Einige Auflistungstypen in Office, insbesondere in Outlook verfügen über ein Default Item(in .NET bekannt als this indexer), einen Count,
jedoch leider nicht über einen Enumerator der ein einfaches foreach ermöglicht. In den von Microsoft seperat breit gestellten Primary Interop Assemblies wurden diese Enumeratoren daher manuell ergänzt. NetOffice tut das jetzt auch. Eine Liste welche Objekte dies betrifft findet sich hier:Issue #16739


Integrierte Debug Console

Die Debug Console enthält eine bewusst simpel gehaltene Log-Funktion, sie zeichnet automatisch alle COMExceptions auf die bei der Interaktion mit Office auftreten. Ich erhoffe mir dadurch einen schnelleren und besseren Support im NetOffice Discussion Board. Wer von Office eine Exception bekommt und dazu eine Frage im Board oder hier im Forum Office-Technologien stellen möchte, fügt den Inhalt der Debug Console seinem Posting an, so kann Ihm oder Ihr schneller geholfen werden.


Verbesserter Beispielcode

Der Beispielcode wurde hinsichtlich der neuen Features überarbeitet, dazu gibt es 2 neue Beispiele und ein 1 neues Tutorial für die Nutzung von EntityIsAvailable und der Debug Console.


Developer Toolbox 0.9

Die Developer Toolbox hat nun technisch und optisch ihren finalen Stand erreicht.
Da NetOffice 1.3 neue Funktionsüberladungen und zusätzliche Enumeratoren mitbringt, ist ein Update der Developer Toolbox auf Version 0.9 erforderlich wenn man die Office Compatibility Komponente für die Code-Analyse nutzt.


In diesem Sinne liebe Freunde, happy Coding!
Dieser Beitrag wurde 18 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
..Heinz..
myCSharp.de - Member



Dabei seit:
Beiträge: 135

beantworten | zitieren | melden

Das kling super. Gleich mal testen.
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Hallo,

Ich habe ein kurzes Update nachgeschoben. Grund ist das Issue #17015

Einige wenige Methoden in Office verwenden Out Parameter. NetOffice hatte das jedoch aufgrund meiner Unachtsamkeit bisher nicht unterstützt bzw. die betreffenden Parameter nicht mit dem out Qualifizerer angeboten. Dieses Missgeschick ist nun behoben.
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
rongchaua
myCSharp.de - Member



Dabei seit:
Beiträge: 102

beantworten | zitieren | melden

@Sebastian.Lange: Erstmal vielen Dank für tolle Bibliothek. Ich hätte gern eine Frage über die Meldung von Bibliothek. Wenn Frage in diesem Thread nicht erlaubt ist, bitte für mich in richtigen Ort verschieben. Danke.

Stand: Ich habe auf meinem Rechner Microsoft Office 2010 installiert außer MS Access. Ich nutze noch die Version 2003 für MS Access. Bitte siehe Anhang.

Frage: Ich würde gern mit deiner Bibliothek alle Kontrolle von aller Formularen in einer MS Access Dateien ermitteln. Der Code sieht ungefähr so aus


LateBindingApi.Core.Factory.Initialize();

Access.Application application = new Access.Application();
try
{
	application.OpenCurrentDatabase(@"D:\Temp\tri.mdb", false);

	foreach (AccessObject frm in application.CurrentProject.AllForms)
	{
		application.DoCmd.OpenForm(frm.Name, Access.Enums.AcFormView.acDesign, Missing.Value, Missing.Value, Access.Enums.AcFormOpenDataMode.acFormPropertySettings, Access.Enums.AcWindowMode.acWindowNormal);

		foreach (var contron in application.Forms[frm.Name].Controls)  //Hier tritt Fehler auf
		{
			//Tu was
		}
                application.DoCmd.Close(Access.Enums.AcObjectType.acForm, frm.Name, Access.Enums.AcCloseSave.acSaveYes);
	}
}
catch (Exception ex)
{
	Console.WriteLine(ex.Message);
}

Ich habe dann Exception bekommen. Es lautet
"Class not exists: NetOffice.AccessApi.Checkbox"
"Class not exists: NetOffice.AccessApi.Combobox"

Wie konnte ich diese Meldung verstehen? Danke.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von rongchaua am .
Attachments
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

[offtopic]
Hallo,
Da es sich -möglicherweise- um ein Fehlverhalten der API handeln könnte ist das Posting hier meiner Ansicht nach berechtigt, die Lösungssuche erfolgt dann allerdings via PM. Wenn klar ist was passiert ist sollte man die Auflösung natürlich anschliessend hier posten. Daher hast du jetzt auch gleiche eine PM von mir.
[/offtopic]
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

So, wie sich rausstellte handelte es sich tatsächlich um einen -quasi- Fehler.

NetOffice untersucht COM Proxies zur Lauzfzeit und ermittelt die namensgleiche Wrapper Klasse, so wird einem Proxy vom Typ Application in Word automatisch die Wrapperklasse NetOffice.WordApi.Application zugeordnet. Im hier vorliegenden Fall
hat der Proxy seinen Namem einfach klein geschrieben zurück gegeben was ich so noch nie erlebt habe.

Ich habe nur einen einzige Zeile im Code ändern müssen damit nichts mehr case-sensitive läuft ;) Behoben!
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Ich habe soeben das NetOffice Release 1.4 veröffentlicht.

Was ist neu?:

- Alle Auflistungsklassen implementieren jetzt IEnumerable<T> und werden dadurch Linq fähig
- Kleine Bugfixes darunter auch das Issue 17551
- Für Properties mit (optionalen) Parametern steht jetzt auch eine gleichnamige Funktion ohne" get"_ oder "set_" zur Verfügung
- Die Developer Toolbox Office Compatibility Komponente ist auf das 1.4 Release geupdatet.

Ankündigung:

Die nächste NetOffice Version wird in VB.NET implementiert sein(bis auf den Kern)
Auswirkungen für C# Entwickler entstehen dadurch allerdings nicht. Es geht im nächsten Release darum den bestehenden VBA Code dieser Welt via Copy'n'Paste zu VB.NET portierbar zu machen. Das ist mit C# jedoch nicht zu erreichen. Ausserdem wird sich die nächste Version nach aussen als COM Interop Assembly darstellen, dies ermöglicht ein direktes einbetten der NetOffice Assemblies. Damit das eigene Assembly dabei nicht übermässig aufgebläht wird gibt es dafür in der Developer Toolbox eine Shrink Komponente die eine abespeckte NetOffice Version basierend auf dem eigenen Assembly erstellt. Anmerkungen/Wünsche und Vorschläge sind mir dazu natürlich willkommen.

EDIT: Ich habe inzwischen festgestellt das Visual Basic einige Unzulänglichkeiten mitbringt die eine Umstellung auf VB.NET vielleicht unmöglich machen. *Just for Info*
Dieser Beitrag wurde 4 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Hallo,

Ich habe soeben ein Update auf das Release 1.4.1 online gestellt.

Im Release 1.4.0 hatte sich bedauerlicher Weise ein Fehler im neu eingeführten SafeMode eingeschlichen. Der SafeMode(bool Settings.EnableSafeMode;) dient dazu nicht vorhandene Funktionalität einer Office Version automatisch zu erkennen und beim Aufruf eine EntitityNotSupportedException auszulösen. Entwickler können ihre Fehlerbehandlung dadurch besser anpassen bzw. besser erkennen das es sich um eine nicht unterstützen Aufruf handelt. Das Feature wird durch einen Cache unterstützt der fälschlicher Weise bei Dispose Aufrufen gelöscht wurde, ausserdem war der SafeMode per Voreinstellung aktiviert was natürlich nicht sein sollte und das Problem verschärft hat.

Ich habe für NetOffice einen Twitter Account eingerichtet in dem ich Issues und Updates durchgebe. @net_office
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Ich habe die NetOffice Developer Toolbox um eine weiteres Feature ergänzt.

Office UI

Jeder Office Entwickler der die klassische Oberfläche in Office ergänzt oder modifiziert kennt möglicherweise das Problem das UI Elemente (unbeabsichtigt) nicht ordnungsgemäss entfernt werden. Das Ergebniss sind "UI Leichen" die persistent in Office verbleiben und die man manuell oder via Code wieder entfernen muss.
Die manuelle Entfernung ist dabei je nach Office Version garnicht mal so einfach, darum bietet die Office UI Komponente einen Weg das auf einfachem Weg zu erledigen. Als Nebeneffekt sind Manipulationen die dem Benutzer in der Form nicht offen stehen ebenfalls möglich.
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von user8744 am .
Attachments
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

beantworten | zitieren | melden

Ich habe gerade die finale Version des NetOffice Visual Studio Projekt Assistent online gestelt.

Verfügbar sind Assistenten für:

- Addins
- WindowsForms Anwendungen
- Consolen Anwendungen
- DynamicLinkLibrary Projekte

Sowohl C# als auch VB.NET werden unterstützt.

Bilderstrecke: Exemplarisches Beispiel für das erstellen eines neuen Addin Projekts mit dem Visual Studio Projekt Assistenten
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
user8744
myCSharp.de - Member



Dabei seit:
Beiträge: 1201

Themenstarter:

NetOffice 1.6.0 ist fertig

beantworten | zitieren | melden

Ab sofort verfügbar ist:

NetOffice 1.6.0

Zuerst: Ich habe es in der Vergangenheit versäumt diesen Thread zu pflegen. Es waren immer nur kleinere Sachen, aber davon nach nun mehr einem Jahr doch soviele das ich garnicht alle aufzählen könnte.
Viele Improvements und Fixes waren auch nur im letzen Source State verfügbar was schon Beschwerden nach sich zog. Daher höchste Zeit für ein neues Release.

Was ist neu?

Neben den besagten Fixes und Verbesseren (viel Performance Gefrickel) ist die wichtigste Neuerung für Addin Entwickler der Tools Namespace. Ein Standard Addin bringt einfach zuviel Gerüstcode mit.
Alleine die Selbstregistrierung bläht den Code immens auf. Mir ist aufgefallen das dies in VSTO irgendwie schöner läuft und daher habe ich den Tools Namespace ins Leben gerufen.
Da Code immer noch am besten für sich spricht, ein kleines Beispiel für ein voll funktionstüchtiges Excel Addin.


[COMAddin("Excel Addin", "NetOffice Tools Sample Addin", 3)]
[ProgId("Sample.Addin"), Guid("C7C8C543-251B-4258-9CAB-3BC0C2ADB2BE")]
public class Addin : COMAddin
{
       public Addin()
       {
            this.OnStartupComplete += new
                          OnStartupCompleteEventHandler(Addin_OnStartupComplete);
            this.OnDisconnection += new
                          OnDisconnectionEventHandler(Addin_OnDisconnection);
        }

        void Addin_OnStartupComplete(ref Array custom)
        {

        }

        void Addin_OnDisconnection(ext_DisconnectMode RemoveMode,
                                                        ref Array custom)
        {

        }
    }
}

Wie man erkennen kann ist das Addin deutlich schlanker. Die sonst obligatorischen Register/Unregister Methoden und das Implementieren von IExtensibility entfällt.
Die Basisklasse COMAddin sowie die Attribute kümmern sich um alles notwendige. Auch das erstellen von TaskPanes/Ribbon UI erleichtert der Tools Namespace erheblich und natürlich
gibt es immer noch Möglichkeiten benutzerdefinierten Registercode auszuführen. Ein Application Property mit der Hostanwendung steht der Instanz automatisch zur Verfügung.
Ich habe die COMAddin Beispiele für alle Office Anwendungen um 2 Beispielprojekte für die NetOffice Tools ergänzt, die so hoffe ich, alle Möglichkeiten aufzeigen.

Achtung: Für Visio steht der Tools Namespace im Moment nicht zur Verfügung, da Visio nicht wie andere Office Anwendungen auf den gemeinsamen Office Kern aufsetzt.

Developer Toolbox

Die Developer Toolbox wurde für das 1.6 Release fit gemacht und upgedatet.
Der Project Wizard ist überarbeitet und macht jetzt einen schöneren und übersichtlicheren Eindruck.
Ausserdem kann er zusätzlich auch Projekte generieren die den Tools Namespace verwenden und auf Wunsch gleich eine Taskpane und/oder RibbonUI dazu erstellen.
MSProject und Visio werden ab sofort auch unterstützt.

Das Project Wizard Addin für Visual Studio werde ich nicht weiter pflegen. Der Aufwand dafür ist sehr hoch und dafür wurde es insgesamt zu wenig verwendet.

Benefits

Auf der Download Seite habe ich noch ein paar zusätzliche Beispielprojekte bereit gestellt.

- Google Translation Addin für Excel
- Wikipedia Such Addin für Word
- Custom PropertyPage für Outlook
- Twitter Addin für Outlook (benötigt ein kostenloses Twitter Developer Token)
- MSI Deployment Beispiel
Dieser Beitrag wurde 12 mal editiert, zum letzten Mal von user8744 am .
private Nachricht | Beiträge des Benutzers
Campy
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

Hallo zusammen,

kann man, und wenn ja wie, mit NetOffice auch auf die Kontakt/Kalender-Ordner von eingebundenen Postfächern zugreifen?

Vielen Dank!
Campy
A programmer is just a tool, which converts coffeine into code!
private Nachricht | Beiträge des Benutzers