Passa ai contenuti principali

Post

Visualizzazione dei post con l'etichetta C#

Log.Net: Conflitto Con CrystalReport per Visual Studio 2010

Situazione: Web Application Asp.Net 4.0, Utilizzo delle librerie di Crystal Report per VS2010. Il progetto web utilizza Log.Net, scaricato dal sito ufficiale. Un problema simile si verifica con applicazioni Windows Form. Problema: Le due librerie vanno in conflitto sia in fase di compilazione ( 1550854 - "Could not load file or assembly 'log4net' or one of its dependencies" Error when building Visual Studio 2010 solution utilizing the Crystal Reports .NET Runtime ), sia una volta installata sulla macchiana target (L'inizializzatore di tipo di 'CrystalDecisions.Shared.SharedUtils' ha generato un'eccezione. Impossibile caricare il file o l'assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' o una delle relative dipendenze. La definizione di manifesto dell'assembly specificato non corrisponde al riferimento all'assembly.). Soluzione Spiegata: Il thread in cui ne parlano. A quanto ho ca...

C# Settings - Mantenere gli User Settings al cambio di versione dell'assembly

I Settings sono utili per mantenere le configurazioni applicazione e le preferenze utente. Possono essere di tipo Application (Read Only a runtime) o User (si possono leggere e salvare via codice a runtime). Il file di configurazione (l'app.config nella solution, che diventa un NomeApplicazione.exe.config una volta compilato) ospita i valori iniziali dei settaggi. Ogni successiva modifica a runtime dei settaggi non tocca questo file ma una sua copia salvata nelle directory utente. I settaggi User vengono però persi al cambio di versione del programma. Una soluzione furba è spiegata in questo post utilizzando funzione Update: http://www.ngpixel.com/2011/05/05/c-keep-user-settings-between-versions/

Debugging Entity Framework Connection String

Caso: Applicazione Windows Forms. Lo strato di accesso ai dati è confinato in una dll satellite. La stessa dll contiene il modello edmx. Dove devo mettere il file App.Config con la Connection String? Soluzione: App.Config che contiene la ConnectionString deve appartenere al progetto dell'eseguibile (se App.Config appartiene alla dll satellite verrà ignorato a runtime anche se viene specificata una regola di deploy che lo copia nella directory corretta). Risultato: Il contenuto del file App.config, una volta installato il programma, verrà copiato nel file di configurazione dell'eseguibile che verrà rinominato in "NomeEseguibile.exe.config" , notare che quindi serve un file i configurazione per ogni eseguibile del nostro progetto. Questo e altre preziose infomazioni sulla ConnectionString per Entity Framework in Troubleshooting Entity Connection String

COM wrapper for a Managed library

In rari casi ci si può trovare a dover esporre un assembly .Net verso un programma scritto in linguaggio unmanaged. Una delle possibili soluzioni è dotare l'assembly di un'interfaccia COM da poter utilizzare nell'applicativo unmanaged. Nel video Make Use of Assemblies Written in Any CLS Language della serie How Do I? videos di Microsoft si affronta un semplice esempio di programma WinForm scritto in C# il cui assembly compilato e registrato come oggetto COM viene poi usato da un programma in Visual C++. I passi fondamentali: Lato C# bisogna importare System.Runtime.InteropService. Impostare gli attributi di classe ComVisible(true) e ClassInterface(ClassInterfaceType. AutoDual ). Una volta compilato l'assembly bisogna far girare l'utility .net regasm per creare la type library. regasm / tlb :PhysServer2. tlb PhysServer2.dll . Poi copiare l'assembly nella stessa directory dell'eseguibile unmanaged che userà la libreria.