CausesValidation e TableLayoutPanel: viene sempre eseguita la validazione della form

Nelle Windows Form normalmente imposto la property CauseValidation a False per il pulsante annulla.

In un progetto mi sono accorto che non funzionava correttamente: cioè anche impostando CauseValidation a False la validazione dei controlli veniva comunque eseguita.

Ho notato che il problema è legato al fatto che i pulsanti sono inseriti in un TableLayoutPanel e quindi è come se fosse prioritaria la proprietà CausesValidation del TableLayoutPanel.

Per far si che il pulsante Annulla non scateni la validazione è quindi necessario impostare a False anche la property CausesValidation del TableLayoutPanel. 

Share

La compatibilità delle applicazioni tra le release di AutoCAD

Da through-the-interface un estratto sul tema della compatibilità tra le release:

Le applicazioni sviluppate sfruttando l'API AutoCAD devono essere testate (ed alcune volte modificate) per garantirne il funzionamento con nuove release di AutoCAD. Per alcune generazione di AutoCAD abbiamo scelto di non garantire la compatibilità binaria delle applicazioni ogni 3 release (storicamente questo è avvenuto con AutoCAD 2000, 2004 e 2007).

Inoltre le applicazioni sviluppate con diverse API richiedono un impegno diverso per effettuare il porting da una release all'altra. Le applicazioni [W:LISP] sono abbastanza portabili tra le release (anche se i nomi e le posizioni dei file di supporto potrebbero cambiare di volta in volta), così come lo sono le applicazioni COM (come VBA e applicazioni esterne VB). Le applicazioni che usano le API managed (C# o VB.NET) sono un po' meno portabili di quelle ObjectARX (C++).

Le applicazioni ObjectARX sono architetturalmente molto vicine al core di AutoCAD ed è per queste applicazioni che gli sviluppatori – sia esterni che interni ad Autodesk – devono dedicare molte risorse quando viene meno la compatibilità tra le release.

Perchè è necessario interrompere la compatibilità col passato? Ci sono alcune ragioni:

  1. Alcune volte vogliamo semplicemente aggiornare le classi dell'API, per aggiungere nuovi metodi ecc. Mentre è possibile aggiungere metodi non-virtuali durante un passaggio di release compatibile, non è possibile garantire la compatibilità quando vengono aggiunti metodi virtuali perchè viene modificata la v-table
  2. Potremmo aver bisogno di aggiornare l'architettura interna o l'uso della tecnologia. Un esempio di ciò è stata l'introduzione massiccia dell'[W:Unicode] in AutoCAD 2007. Questo è stato un profondo cambiato nel modo con cui AutoCAD gestisce internamente le stringhe e ha richiesto la modifica della signature di molte funzioni ObjectARX.
  3. Infine si vuole godere dei vantaggi offerti dall'ultima versione del compilatore per compilare AutoCAD. AutoCAD 2000-2002 sono state compilate con Visual Studio 6, AutoCAD 2004-2006 con Visual Studio .NET 2002 e AutoCAD 2007 con Visual Studio 2005. E' importante per Autodesk rimanere allineati con l'ultima versione supportata del compilatore per ottenere supporto da Microsoft su problemi critici ma soprattutto per fornire nuove funzionalità, come ad esempio la possibilità di usare WinForms in AutoCAD e di esporre un API managed.

La domanda adesso è: perchè non viene interrotta la compatibilità ad ogni release? A causa delle difficoltà che temono i clienti e gli sviluppatori. La mancanza di compatibilità di un'applicazione in una nuova release ha impatto sull'accettazione di quella release. Mantenere una finestra di 3 release (che ad oggi equivale a 3 anni) fornisce agli sviluppatori il tempo per concentrarsi sui miglioramenti dell'applicazione a favore del cliente piuttosto che spendere risorse per la migrazione alla nuova piattaforma.

L'articolo completo si trova a questo indirizzo: http://through-the-interface.typepad.com/through_the_interface/2006/06/compatibility_o.html 

Proprio in questi giorni stò migrando un'applicazione scritta in C#-VB.NET che funziona su AutoCAD 2006 alla nuova piattaforma AutoCAD 2008. La mancanza di compatibilità c'è ma è veramente ridotta al minimo (cose tipo enumerati che hanno cambiato nome o poche funzioni con una signature diversa), nulla che non si possa agevolmente gestire utilizzando le direttive del compilatore. In pratica ho definito una direttiva ACAD2006 ed una direttiva ACAD2008 e con quelle decido per quale piattaforma compilare la DLL.

Share

.NET e AutoCAD

Da through-the-interface:

Gli ingegneri di AutoCAD hanno creato il primo prototipo di API managed per AutoCAD 2004. Era una cosa abbastanza rivoluzionaria all'epoca: una DLL ibrida che espone un'interfaccia managed ed esegue il marshalling di queste chiamate verso le corrispondenti chiamate unmanaged ObjectARX. Erano molte, e lo sono ancora oggi, le ragioni per cui .NET era interessante per gli sviluppatori… 

.NET fornisce la facilità di sviluppo che era disponibile solo (o principalmente) ai client VB tramite COM. Puoi usare COM o dei componenti .NET nei tuoi progetti, ma puoi generare codice più facilmente utilizzando dei linguaggi di programmazione più evoluti (e VB.NET è molto più evoluto di VB6).

Un primo beneficio per Autodesk fu la possibilità di mappare dei tipi di dato molto più complessi (come quelli definiti in ObjectARX) su un'API managed. Quando progetti un API COM se molto più limitato – puoi utilizzare solo dei tipi base ed oltre quelli per definirne altri devi implementare delle interfacce complesse basate su IDispatch il che porta inevitabilmente ad un overhead di progettazione e di sviluppo: è laborioso esporre delle interfacce di COM Automation per delle classi C++ complesse.

Per un primo contatto con l'API .NET per AutoCAD visita l'AutoCAD Developer Center – dove i Labs sono un ottimo punto di partenza.

Nei prossimi post vedremo la struttura di base di una semplice applicazione .NET per AutoCAD e come sfruttare le API COM e unmanaged attraverso la COM Interop e P/Invoke.

Articolo originale: http://through-the-interface.typepad.com/through_the_interface/2006/06/net_and_autocad.html

Share

A breve la traduzione di alcuni post di Kean Walmsley dal blog through-the-interface

Chi è Kean Walmsley?

Come riportato sul suo blog (http://through-the-interface.typepad.com/) Kean ha lavorato in Autodesk sin dal 1995, concentrandosi su supporto alla programmazione, consulenza, formazione ed "evangelism" verso sviluppatori esterni. Ha lavorato in Autodesk in svariate nazioni: ha cominciato la sua carriera in Inghilterra e poi, spostandosi ogni 2-3 anni, ha lavorato in Svizzera, Stati Uniti ed India. Attualmente Kean è Senior Manager di Developer Technical Service (DevTech), un gruppo mondiale di guru che forniscono servizi tecnici tramite Autodesk Developer Network (ADN).

Ho avuto l'opportunità di contattarlo per richiedergli supporto tecnico per la soluzione di alcuni problemi presso un mio cliente e ne ho approfittato per chiedergli il permesso di tradurre su questo blog alcuni dei suoi post relativi ad ObjectARX e .NET per cercare di diffondere l'API in Italia e magari creare una comunità italiana specializzata.

Ha accettato con molto piacere quindi a breve inizierò a pubblicare alcuni suoi articoli in questo blog, il che sarà anche per me un'opportunità di approfondimento sui temi tecnici che via via propone.

Grazie!

Share

Rilasciata la versione 1.3 di BlogEngine

E' stata rilasciata la versione 1.3 di BlogEngine.

Le principali novità riguardano:

  • Estensione del sistema autori/ruoli (utenti/ruoli/amministratori)
  • Rendering del blog ottimizzato per i dispositivi mobili
  • Possibilità di commentare anche le pagine e non solo i post
  • La form per l'inserimento dei commenti è stata modificata
  • E' possibile modificare i commenti 
  • Reso universale il SQL factory provider (supporta tutti i db T-SQL DB)
  • Widget plug-in framework
  • Profile provider
  • Supporto più completo a Windows Live Writer
  • Le pagine nella sezione di amministrazione sono diventate gerarchiche

Maggiori dettagli sul sito http://dotnetblogengine.net.

Share

BlogEngine, subText o WordPress?

Ho deciso che era ora di cambiare motore di blog in quanto quello di DotNetNuke è troppo limitato ed i rilasci di nuove versioni non sono frequenti.

La scelta si è ristretta a tre pretendenti:

  • [W:WordPress]
  • BlogEngine 1.2
  • subText

WordPress è un ottimo prodotto, supportato e dispone di molti plugin ma l’ho subito scartato per un motivo: è scritto in php. Dopo aver lavorato per anni con un linguaggio di scripting simile (ASP) ed essere poi passato ad un linguaggio ad oggetti con tutto quello che ne consegue non ritengo costruttivo fare un passo indietro di questa portata. Inoltre scegliere un motore di blog in ASP.net mi offre maggiori possibilità di personalizzazione e di integrazione con tutto il mondo Microsoft.

BlogEngineLogo

A questo punto tra i due blog restanti su piattaforma ASP.net la mia scelta è ricaduta su BlogEngine 1.2 in quanto utilizza al meglio tutte le ultime tecnologie:

  1. è interamento scritto in C# 2.0
  2. utilizza le pagine master quindi i temi sono facilmente installabili e modificabili
  3. è multilingua tramite i file di risorse
  4. è facilissimo impostare la sitemap per google ed installare i servizi Google Analytics semplicemente inserendo lo script dall’area di amministrazione
  5. ha il concetto di “Post collegati”: per ogni post BE determina quali sono possibili post di interesse legati a quello corrente
  6. sfrutta massicciamente AJAX e quindi il refresh delle pagine è limitato solo alle sezioni che richiedono una modifica rendendo molto piacevole la user experience (molto carino il live preview per l’inserimento dei commenti)
  7. integra un sistema per impedire l’inserimento automatico dei commenti da parte di bot senza utilizzare l’antipatico CAPTCHA
  8. sfrutta il caching di ASP.net quindi il download delle pagine è velocissimo ed il server è poco impegnato
  9. importa/esporta l’intero contenuto del blog in formato BlogML
  10. autosaving del post dopo qualche minuto di modifica
  11. possibilità di gestire il blog tramite Windows Live Writer e Office 2007
  12. slug per la definizione del nome della pagina: il nome della pagina viene determinato automaticamente a partire dal titolo del post e ne risulta poi indipendente
  13. tag cloud
  14. è multi-autore
  15. i commenti possono essere moderati
  16. è possibile inserire pagine statiche
  17. e altro ancora che non ho scoperto/utilizzato ….

La caratteristica sicuramente più interessante è pero questa: a default il blog non utilizza SQL Server ma salva tutte le informazioni (utenti, post, impostazioni) in XML.
In questo modo è possibile installare il blog anche su hosting molto limitati che non dispongono di database o comunque in tutti i casi in cui si vuole risparmiare il canone relativo a SQL Server. E’ sufficiente disporre dei diritti di scrittura nella cartella App_Data del progetto.

Inoltre trovo eccezionale il motore di gestione della pagina 404: se si inserisce un’url non corretta BlogEngine propone i post che potrebbero in qualche modo corrispondere all’url errata.

Soffre ancora di qualche problema di gioventù, ad esempio

  • problema relativo alla data nella modifica di un post: se si imposta la lingua italiana, l’ora del post non viene correttamente formatta richiedendo l’inserimento dei “:” ad ogni modifica
  • se si modifica un post e si cerca di inserirne uno nuovo viene ancora riportato il testo del precedente post.

Si tratta comunque di problemi ridicoli in confronto alla qualità del prodotto, facilmente sistemabili e presenti solo nell’area di amministrazione, e che non pregiudicano minimamente il funzionamento pubblico del blog.

Inoltre non è multi blog: si tratta di una scelta progettuale per mantenerlo snello e facile da utilizzare (per ora, ma nella roadmap se ne parla già).

Il progetto è hostato su CodePlex: http://www.codeplex.com/blogengine/.

Il sito ufficiale è raggiungibile su http://dotnetblogengine.net/ mentre alla pagina http://dotnetblogengine.net/page.aspx?id=bfd50c26-b406-4044-b861-032dfe5caba6 è presente un elenco completo di tutte le caratteristiche.

Share

Intercettare l’evento click di un DataGridViewButtonColumn di una DataGridView

Se da una DataGridView si vuole intercettare l'evento di click su di una DataGridViewButtonColumn è necessario scrivere un paio di righe di codice.

Nell'esempio seguente si suppone che la colonna contenente il bottone si chiami 'colEdit' ed è stata utilizzata per aprire una form di dettaglio.

Private Sub DataGridView1_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick

If e.ColumnIndex = Me.DataGridView1.Columns("colEdit").Index Then

 Dim frm As New frmCommessa

 frm.ShowDialog()

End If

End Sub

Share

Technical Conference 2005: uno sguardo al futuro e ritorno

Ieri si è tenuta a Milano la prima tappa italiana della Technical Conference 2005 di Microsoft (la seconda ed ultima tappa si terrà a Roma il 22 novembre).

E' stata una giornata lunga (soprattutto per me che son partito e tornato a Bologna in giornata) ma sicuramente ha offerto interessanti spunti sul futuro dello sviluppo da un lato e dei nuovi prodotti che entraranno nelle aziende dall'altro.

 Innanzitutto complimenti all'organizzazione (ma non c'era da dubitare) che è riuscita a gestire 2.600 persone senza alcun problema (l'unica pecca è che è stato distribuito poco caffè…). In particolare ho apprezzato il servizio di navetta che dalla stazione ci ha portato all'evento e ritorno (all free, of course, che è ciò che interessa principalmente).

Vediamo più in dettaglio quali sono state le sessioni.

L'evento è cominciato con una sessione plenaria di presentazione di ciò che ha fatto Microsoft per noi. In pratica dopo una prima autocelebrazione di quanto Microsoft sia più brava, più bella, e più simpatica dei concorrenti (in particolare come sempre aleggiava lo spettro di Oracle), c'è stata una prima track a 6 mani per fornire il contenitore dell'intera giornata.

In pratica si parte da una società di startup che vuole iniziare a vendere prodotti tramite internet, con un budget limitato ma senza precludersi possibilità per il futuro.

La soluzione? Partire con Visual Studio 2005 Express Edition e SQL Server 2005 Express (entrambi scaricabili gratuitamente dal sito Microsoft).

E' stato creato un backoffice client – server per la gestione dei prodotti e degli ordini ed un front-end web per mostrare il catalogo prodotti ai potenziali clienti ed accettare gli ordini.

Con il crescere della società sono state aggiunte feauture e prodotti sempre sotto il controllo dei 3 soci:

  • l'architect, che vive di Visio e Biztalk Server 2006
  • il db administrator, che relaziona tutto usando SQL Server 2005
  • lo sviluppatore, che manda avanti la baracca facendo tutto quello che chiedono ai piani alti

 Dopo questa prima sessione sono iniziati i 3 percorsi corrispondenti ai 3 ruoli descritti:

  • Percorso avanzato
  • Percorso per professionisti IT e amministratori di database
  • Percorso per sviluppatori

Non avendo il dono dell'ubiquità ed essendo ancora digiuno dei concetti base dei prodotti 2005, ho seguito il percorso per sviluppatori.

A sua volta questo percorso si è svolto attraverso 4 track di un'ora ciascuna:

  1. Visual Studio Team System: software per fare il software
  2. Sviluppare una soluzione completa con Visual Studio 2005 e SQL Server 2005 – Parte 1
  3. Sviluppare una soluzione completa con Visual Studio 2005 e SQL Server 2005 – Parte 2
  4. Sviluppare una soluzione completa con Visual Studio 2005 e SQL Server 2005 – Parte 3

Visual Studio Team System: software per fare il software

In questa ora sono state mostrate le caratteristiche e soprattutto gli strumenti inseriti nell'IDE delle varie versioni di Visual Studio 2005 soffermandosi in particolare sugli strumenti di collaborazione, di bug tracking, di debugging e di testing inseriti nell'ambiente integrato.

Sviluppare una soluzione completa con Visual Studio 2005 e SQL Server 2005

Sono state 3 ore di demo continuativa senza alcun lucido per mostrare sul campo il funzionamento di Visual Studio per lo sviluppo di applicativi Client – Server, Web e per Pocket PC.

Sono stati mostrati alcuni dei nuovi controlli inseriti nell'ambiente (alcuni in quanto sono veramente molti) sia per lo sviluppo di applicativi client-server che per lo sviluppo web, ponendo in particolare l'accento sulle nuove modalità per fare il binding dei dati con le form e le web-form. Il tutto come sempre con tanto drag&drop e la promessa di scrivere meno codice. Sono sempre un po' scettico su questa affermazione ricorrente però le premesse mostrate alla demo sono interessanti.

Ho particolarmente apprezzato la possibilità di fare binding non più soltanto con un database ma con un DataObject in modo da favorire lo sviluppo di architetture a 3 livelli.

Installare e distribuire gli aggiornamenti: ClickOnce

Di sicuro interesse è la tecnologia ClickOnce che consente di effettuare il deploy d un applicativo client-server su di un server web.
Cliccando sul link dell'applicativo questo viene installato sul computer locale ed è immediatamente disponibile senza l'utilizzo di nessun ActiveX.
La cosa interessante è che si possono scegliere due modalità di distribuzione:
– temporanea: l'applicativo non viene lasciato sul client ma risiede nella temp
– nel menù Start -> Programmi: e quindi installato in locale come qualunque programma

Alla prima installazione vengono verificati i prerequisiti (quali Framework 2.0 o SQL Express 2005) ed eventualmente installati in automatico.
Vi assicuro che la demo di questa tecnologia ha suscitato molto interesse.

La separazione tra grafica e codice: Master Pages e Themes

Per quanto riguarda il mondo web particolare risalto è stato dato al concetto della Master Pages e degli Skin che dovrebbe dare un'ulteriore spinta in avanta alla tanto desiderata separazione tra il codice e la grafica.

Con l'utilizzo delle Master Pages si definisce un template che funge da "matrice" per tutte le pagine del sito (nulla di nuovo, è esattamente ciò che offre Dreamweaver). Accedendo ad una pagina che si basa su template si possono solo aggiungere componenti senza modificare il template sottostante.

Gli skin consentono invece di avere grafiche diverse per clienti diversi: è molto simile al concetto di Tema in windows, lo skin è una collezione di CSS ed immagini che vengono applicate ai web controls.

Sono state mostrate all'opera le Web Parts che consentono di definire aree della pagina che possono essere personalizzate. Ogni area può essere eliminata o spostata tramite drag&drop, le caratteristiche di ogni web part sono personalizzabili e gestibili con diversi ruoli di accesso.

Login, Registrazione, Ruoli e dintorni

Un altro po' di tempo è stato speso per mostrare i controlli che forniscono tutta la plumbing per il login di un utente, la sua registrazione, il collegamento ad un profilo già esistente nel database e la gestione di tutti i parametri di autenticazione.

In particolare tutte le voci di authentication e authorization presenti nel web.config primario e nei web.config nelle sottocartelle possono adesso essere gestite tramite una pagina web.

I Gadgets

Last but not least i tanto attesi gadgets promessi da Microsft.

Non ho ancora provveduto alle installazioni ma devo dire che il materiale fornito è tanto e di alta qualità.

La parte più interessane è il pacchetto con:

  • SQL Server 2005 Standard Edition (1 CAL), versione NFR (not for resale)
  • Visual Studio 2005 Standard Edition, versione NFR
  • un voucher per un esame di certificazione sulle tecnologie mostrate alla conferenza
  • un coupon per richiedere l'invio di una copia free di Microsoft BizTalk 2006 Developer Edition

 Altri CD e DVD contenenti:

  • Visual Studio Team System
  • BizTalk Server 2006: Laboratori di base
  • SQL Server 2005 Resource DVD: codice di esempio, webcast, Training, Video, Documentazione, Soluzioni e altro materiale dei Partner
  • SQL Server 2005: Tecnologie per la disponibilità dei dati
  • SQL Server 2005 e Visual Studio 2005: Laboratori di base
  • IT's ShowTime
  • SQL Server 2005 e Visual Studio 2005: panoramica di Microsoft SQL Server 2005 e Microsoft Visual Studio 2005
  • Documentazione Microsoft e dei Partner sui 3 prodotti della conferenza

Il tutto con diverso materiale cartaceo degli sponsor e dei partner.

In aggiunta presso uno stand Microsoft ho ricevuto una copia di valutazione (180gg) di Windows Server 2003 R2 Enterprise Edition.

Che altro dire? Buon lavoro a tutti

Share

Disabilitare i performance counters delle Enterprise Library

Stanco degli svariati errori che le Enterprise Library danno provando di accedere ai Performance Counters, ai WMI, all'event viewer ecc. ecc. ho trovato un rapido modo per disabilitarli (il che spero che provochi anche un aumento di prestazioni).

Per fare ciò:

  1. Aprire con visual studio la soluzione completa:
    Start->Programmi ->Microsoft Patterns and Practices -> Enterprise Library -> Applications Blocks -> Enterprise Library..sln
  2. Cercare il progetto "Common", premere il tasto destro e selezionare "Properties"
  3. Nelle  “Configuration Properties”  selezionare l'opzione "Build"
  4. Nella sezione  "Conditional Build" rimuovere tutto tranne  “DEBUG;TRACE”"
  5. Ricompilare l'intera soluzione (verificare in "Common" se sono rimasti effettivamente solo  “DEBUG;TRACE”  in quanto al primo giro non me li aveva salvati)
  6. A questo punto bisogna riportare le DLL nella GAC usando:
    Start->Programmi ->Microsoft Patterns and Practices -> Copy assemblies to bin directory
  7. Se non si usa la GAC è necessario ricopiare le DLL usate nella directory bin dell'applicazione
  8. Per sicurezza rimuovere e ricreare le reference nella vostra applicazione e ricompilarla
  9. Mettete tutto sul server di produzione
  10. E finalmente niente più errori

 (Thanks to:  Sashidhar Kokku at http://dotnetjunkies.com/WebLog/sskokku/archive/2005/03/25/61376.aspx)

Share

SecurityException utilizzando le Microsoft Enterprise Library

Utilizzando le Microsoft Enterprise Library si può ricevere il seguente errore:

System.Security.SecurityException: Requested registry access is not allowed

In genere ciò non avviene sulla propria workstation di sviluppo ma quando si installa l'applicazione sul web server di produzione (dal cliente oppure in hosting).

Il motivo è che le Enterprise Library per funzionare correttamente richiedono la creazione nel registro di appositi Performance Counter

Quindi è necessario aggiungere alcune chiavi di registro. Si possono inserire manualmente le righe seguenti nel registro oppure si possono copiare in una file con estensione .reg (ad esempio enterprise.reg) e facendoci poi doppio click sopra avviene automaticamente l'installazione.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Backup Sink]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Caching]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Configuration]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Cryptography]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Data Service]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Distributor Service]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEntLib Exception Handler]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Exception Handling]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Instrumentation]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Logging Service]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Security]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventlogApplicationEnterprise Library Security Cryptography]
"EventMessageFile"="C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\EventLogMessages.dll"

Alcuni post indicano come strettamente necessaria esclusivamente l'ultima chiave ma da me non ha funzionato finchè non le ho installate tutte.

Aggiornamento: "Come disabilitare i performance counters nelle Enterprise Library"

Share