2013-09-03 41 views
5

Tôi có một bổ trợ VSTO Excel 2007 để đọc kết nối từ tệp app.config và sau đó cho phép người dùng quyết định kết nối cơ sở dữ liệu nào. Điều này làm việc tốt khi tôi gỡ lỗi nó, nhưng khi tôi chạy phiên bản được triển khai (được thực hiện với Windows Installer) thì các kết nối không được đọc chút nào. Tôi đã thêm các kết quả đầu ra chính từ tất cả các dự án vào dự án thiết lập. Tệp app.config nằm trong dự án ExcelAddIn, nhưng không nằm trong tiêu đề Excel. Lớp quản lý kết nối là trong một dự án khác.Phiên bản VSTO Debug tốt, Phiên bản đã cài đặt không đọc app.config

Dưới đây là file app.config của tôi:

<?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> 

tôi sử dụng sau đây để có được connectionStrings:

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

Tôi đã cố gắng thêm file ExcelAddin.dll.config đến thiết lập thư mục của dự án trong đó thư mục Release và tệp .proj là. Tôi đã thiết lập thuộc tính 'Copy to Output Directory' của file app.config thành 'Copy always' và thuộc tính Build Action thành 'Content'.

Có điều gì đó đáng lo ngại với tệp app.config của tôi hay tại sao nó không được chọn (kết nối không được tải vào csSection) sau khi tôi đã chạy trình cài đặt?

Trả lời

4

Thêm file:/// đến [TARGETDIR]ExcelAddIn.vsto|vstolocal (ví dụ: file:///[TARGETDIR]ExcelAddIn.vsto|vstolocal) tại mục đăng ký trong "trình cài đặt".

+0

Câu trả lời này đã tiết kiệm cho tôi số giờ làm việc. Cảm ơn bạn! Khi bạn tạo các trình cài đặt VSTO bằng cách sử dụng MSI, hãy kiểm tra xem giá trị khóa sổ đăng ký 'Manifest' của bạn có bắt đầu bằng' file: /// 'như được mô tả trong câu trả lời ở trên không. Khác Add-In sẽ sử dụng Excel.exe.config (nếu bạn viết một Excel Add-In) thay vì cấu hình của bạn. – lennartk

0

Bạn cần thêm tệp ứng dụng.Config vào Dự án thiết lập của bạn nhưng không phải từ dự án thực tế làm điều đó từ thư mục Release \ Debug của dự án ExcelAddIn.

Khi bạn xây dựng dự án ExcelAddIn, tệp này sẽ để lại Tệp App.config cho Thư mục Release \ Debug, piCk tệp ở đó và đưa nó vào thư mục phụ thuộc của Dự án thiết lập.

+0

Tôi không chắc liệu tôi có hiểu chính xác bạn hay không. Tôi xây dựng dự án ExcelAddin. Sau đó, tôi nhấn vào dự án Setup và thêm tệp ExcelAddin.dll.config từ thư mục Release của ExcelAddin. Sau đó, tôi xây dựng các dự án thiết lập, làm sạch các giải pháp, và cài đặt các msi. Thật không may điều này không giải quyết được vấn đề. Tôi đã thử tương tự như trên, nhưng với tệp app.config được tìm thấy trong thư mục ExcelAddin (không tiếp tục xuống trong bin/Release). Sau đó, tôi đã sao chép tệp ExcelAddin.dll.config trong Explorer và dán nó vào thư mục của dự án Thiết lập (trong đó .proj là). Tương tự như vậy với app.config. Không vui. – Igavshne

+0

Bạn đã cung cấp đầu ra chính của dự án ExcelAddin cho Dự án Thiết lập của mình chưa? –

+0

Có, tôi cũng có, và cũng là đầu ra chính của tất cả các dự án khác. – Igavshne

0

Dường như nó đang hoạt động với ClickOnce. Vì vậy, tôi vẫn không biết vấn đề là gì với dự án thiết lập và sử dụng Windows Installer, nhưng ít nhất tôi có thể triển khai nó.

Các vấn đề liên quan