2013-09-03 23 views
5

Possiedo un componente aggiuntivo di Excel 2007 VSTO che dovrebbe leggere le stringhe di connessione dal file app.config e consentire all'utente di decidere a quale database connettersi. Funziona bene quando eseguo il debug, ma quando eseguo la versione distribuita (eseguita con Windows Installer) le connessioni non vengono lette affatto. Ho aggiunto le uscite primarie da tutti i progetti al progetto di installazione. Il file app.config si trova nel progetto ExcelAddIn, ma non sotto l'intestazione di Excel. La classe che gestisce le stringhe di connessione è in un altro progetto.Versione debug di VSTO, la versione installata non legge app.config

Ecco il mio file app.config:

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> 
    </configSections> 
    <connectionStrings> 
    <clear/> 
    <add name="MyEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/SymModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=myServer;initial catalog=myDB;persist security info=True;user id=myUser;password=myPassword;multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient"/> 
    </connectionStrings> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> 
     <parameters> 
     <parameter value="v11.0"/> 
     </parameters> 
    </defaultConnectionFactory> 
    </entityFramework> 
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> 

Io uso il seguente per raggiungere le connectionStrings:

System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
     ConnectionStringsSection csSection = config.ConnectionStrings; 

ho cercato di aggiungere il file al ExcelAddin.dll.config imposta la cartella del progetto in cui si trovano la cartella Release e il file .proj. Ho impostato la proprietà 'Copia in Output Directory' del file app.config su 'Copia sempre' e la proprietà Build Action su 'Content'.

C'è qualcosa di logico con il mio file app.config, o perché non viene prelevato (le stringhe di connessione non vengono caricate in csSection) dopo che ho eseguito il programma di installazione?

risposta

4

Aggiungi file:/// a [TARGETDIR]ExcelAddIn.vsto|vstolocal (ad esempio: file:///[TARGETDIR]ExcelAddIn.vsto|vstolocal) nelle voci del Registro di sistema in "programma di installazione".

+0

Questa risposta mi ha salvato ore di lavoro. Grazie! Quando si eseguono gli installer VSTO utilizzando MSI, verificare che il valore della chiave di registro 'Manifest' inizi con' file: /// 'come descritto nella risposta sopra. Altrimenti il ​​componente aggiuntivo utilizzerà Excel.exe.config (se si scrive un componente aggiuntivo di Excel) anziché la configurazione. – lennartk

0

È necessario aggiungere il file app.Config al progetto di installazione ma non dal progetto effettivo eseguirlo dalla cartella Release \ Debug del progetto ExcelAddIn.

Quando si genera il progetto ExcelAddIn lascerà App.config File alla cartella Release \ Debug, piCk il modulo file lì e includerlo nella cartella dependicies del progetto di installazione.

+0

Non sono sicuro se ho capito bene. Costruisco il progetto ExcelAddin. Quindi faccio clic sul progetto di installazione e aggiungo ExcelAddin.dll.config dalla cartella Release di ExcelAddin. Quindi creo il progetto di installazione, pulisco la soluzione e installo il file msi. Sfortunatamente questo non risolve il problema. Ho provato lo stesso come sopra, ma con il file app.config trovato nella cartella ExcelAddin (non più in basso nel cestino/Release). Quindi ho copiato il file ExcelAddin.dll.config in Explorer e incollato nella cartella del progetto di installazione (dove è il .proj). Allo stesso modo con l'app.config. Nessuna gioia. – Igavshne

+0

Hai fornito l'output principale del progetto ExcelAddin al tuo Progetto di installazione? –

+0

Sì, ho anche l'output principale di tutti gli altri progetti. – Igavshne

0

Sembra che funzioni con ClickOnce. Quindi non so ancora quale fosse il problema con il progetto di installazione e l'utilizzo di Windows Installer, ma almeno posso distribuirlo.