タイトル | : 厳密名を付けての参照設定について |
記事No | : 6842 |
投稿日 | : 2008/01/17(Thu) 15:15 |
投稿者 | : K |
いつもお世話になります。Kと申します。
環境:WinXP+SP2 VB.net2003 Excel2003+SP3 Access2003+SP3
作成したアプリケーションを共有サーバに置き、利用しているのですが アプリケーションのバグ修正やバージョンアップの際の都度、 各PCでアセンブリの信頼の設定を行っています。 最近社員も増え、その作業が重荷になってきました。 そこで、アプリケーションに公開キーを作成し厳密名を設定して 今後、アセンブリの信頼の設定をせずに済むようにしたいと考えています。
そこで質問なのですが、公開キーを作成し各アプリケーションのAssemblyInfo.vbを 修正してビルドしたところ、ソリューションエクスプロラーの参照設定の中で ExcelとMIcrosoft.Office.Coreを参照してるプロジェクトで 「エクセルのInterop.Excelは厳密名を持ってない!」というようなエラーが出て しまいました。 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=27151&forum=7 を参考にして色々とやってみましたがどうにもうまくいかず困っています。 やってみた事は
ソリューションエクスプローラーの参照設定でExcelを参照する時の情報を確認し tlbimpで厳密名付の相互運用アセンブリを作成した。 まず通常の参照設定では Microsoft Excel 11.0 Object Libraryを参照してました。 これは、 C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE を見ているようだったのでこのEXCEL.EXEを tlbimp C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE /keyfile:KeyFile.snk /out:PubExcel.dll とMicrosoft Visual Studio .NET 2003に入っているVisual Studio .NET 2003 コマンド プロンプトで実行しました。 先に参照していた、ExcelとMicrosoft.Office.Coreを削除し、出来上がった PubExcel.dllをソリューションエクスプローラーの参照設定から参照しました。 厳密名についてはクリアしたようなのですが、ビルドをかけると >メイン コンパイルを実行しています... >Form2.vb(561) : error BC30002: 型 'Excel.Application' が定義されていません。 >Form2.vb(562) : error BC30002: 型 'Excel.Workbooks' が定義されていません。 >Form2.vb(563) : error BC30002: 型 'Excel.Workbook' が定義されていません。 >Form2.vb(564) : error BC30002: 型 'Excel.Sheets' が定義されていません。 >Form2.vb(565) : error BC30002: 型 'Excel.Worksheet' が定義されていません。 >Form2.vb(566) : error BC30002: 型 'Excel.Range' が定義されていません。 >サテライト アセンブリをビルドしています... >メイン プロジェクト出力が見つからないため、サテライト アセンブリをビルドでき >ませんでした。 とエラーが出てしましました。 ちなみにMicrosoft Excel 11.0 Object Libraryを参照設定に設定した場合、 Interop.Excel.dllが作成されます。これをtlbimpで厳密名を付けようとすると TlbImp error: The input file 'Interop.Excel.dll' is not a valid type library というエラーがでてしまいます。
tlbimpで対象としてるEXCEL.EXE事が間違っているのか、それとも根本的に間違った事 をしているのか分からず困っている状況です。
もしこれについての対処方法や詳しく説明しているサイト等ご存知の方がいらっしゃい ましたらご教授お願いいたします。
説明不足等ありましたら、ご指摘ください。
|