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="data source=myServer;initial catalog=myDB;persist security info=True;user id=myUser;password=myPassword;multipleactiveresultsets=True;App=EntityFramework"" 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?
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