2013-09-03 7 views
5

appstoreファイルからconnectionstringsを読み込み、接続するデータベースをユーザーに決定させるVSTO Excel 2007アドインがあります。これはうまく動作しますが、デプロイされたバージョンを実行すると(Windowsインストーラを使用して)、接続文字列はまったく読み込まれません。すべてのプロジェクトのプライマリ出力をセットアッププロジェクトに追加しました。 app.configファイルはExcelAddInプロジェクトにありますが、Excelの見出しの下にはありません。接続文字列を管理するクラスは別のプロジェクトにあります。ここでVSTOデバッグバージョンが正常にインストールされたバージョンでapp.configが読み取られない

は私の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> 

私はのconnectionStringsを取得するには、以下の使用:

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

私はExcelAddin.dll.configファイルを追加しようとしましたセットアッププロジェクトのリリースフォルダと.projファイルがあるフォルダ。 app.configファイルの 'Copy to Output Directory'プロパティを 'Copy always'に設定し、Build Actionプロパティを 'Content'に設定しました。

私のapp.configファイルに何か問題がありますか?それとも、インストーラを実行した後に接続ストリングが取り込まれないのですか(csSectionに接続文字列が読み込まれません)。

答えて

4

「installer」のレジストリエントリにfile:///[TARGETDIR]ExcelAddIn.vsto|vstolocal(例:file:///[TARGETDIR]ExcelAddIn.vsto|vstolocal)を追加してください。

+0

この回答により、私は時間を節約できました。ありがとうございました! MSIを使用してVSTOインストーラを作成するときは、上記の答えに記述されているように 'Manifest'レジストリキーの値が' file:/// 'で始まるかどうかを確認してください。それ以外の場合、アドインでは、設定の代わりにExcel.exe.config(Excelアドインを作成する場合)を使用します。 – lennartk

0

app.Configファイルをセットアッププロジェクトに追加する必要がありますが、実際のプロジェクトからは追加できません.ExcelAddInプロジェクトのRelease \ Debugフォルダから実行します。

ExcelAddInプロジェクトをビルドすると、App.configファイルがRelease \ Debug Folderに残され、そこにファイルフォームが作成され、セットアッププロジェクトのdependiciesフォルダにインクルードされます。

+0

私はあなたを正しく理解しているかどうかはわかりません。 ExcelAddinプロジェクトをビルドします。次に、セットアッププロジェクトをクリックし、ExcelAddinのReleaseフォルダからExcelAddin.dll.configを追加します。次に、セットアッププロジェクトを構築し、ソリューションをクリーンアップし、msiをインストールします。残念ながら、これは問題を解決しません。私は上記と同じように試しましたが、app.configファイルがExcelAddinフォルダにありました(bin/Releaseにはそれ以上はありません)。 次に、エクスプローラでExcelAddin.dll.configファイルをコピーし、セットアッププロジェクトのフォルダ(.projがある場所)に貼り付けました。 app.configと同様です。喜びはありません。 – Igavshne

+0

ExcelAddinプロジェクトのプライマリ出力をセットアッププロジェクトに指定しましたか? –

+0

はい、他のすべてのプロジェクトのプライマリ出力もあります。 – Igavshne

0

ClickOnceと連携しているようです。だから私はまだ問題がセットアッププロジェクトとWindowsインストーラを使用していたのか分からないが、少なくとも私はそれを展開することができます。