2009-08-25 10 views
3

別のアプリケーション(この場合はWindowsサービス)から呼び出されたポータルの内蔵モジュールアップグレード機能を使用して、私が更新したいいくつかのDNNモジュールがあります。 DotNetNuke.dllをWebアプリケーションの外部で機能させるために、主要な領域のDNNソースを変更して、ポータルのバージョン4.3ですべての機能を動作させることができました。私は現在4.9.0のソースコードで同じことをしようとしていますが、私は問題があります。別のアプリケーションからDotNetNukeモジュールを更新する

DNNがデータベースからの読み取りを試みるまで、すべて正常に機能します。私は、Windowsサービスプロジェクト、DNNライブラリプロジェクト、およびその他の関連プロジェクトを1つのVSソリューションにロードしています(追加プロジェクトは、DNNソースで提供されるメインソリューションファイルに含まれるものと同じです)。私はサービスでPaInstaller.Installを呼び、各モジュールを更新します。実行はreflection.vbになり、型名に基づいてDotNetNuke.Data.SqlDataProviderオブジェクトを作成しようとします。 System.Web.Compilation.BuildManager.GetTypeを呼び出すときに例外が発生します。例外は言う:

タイプをロードできませんでした 'DotNetNuke.Data.SqlDataProvider' アセンブリから 'System.Webの、バージョン= 2.0.0.0、文化=中立、なPublicKeyToken = b03f5f7f11d50a3aは'

私はそれを意味するためにこれを読んでDotNetNuke.SqlDataProvider.dllアセンブリを見つけることができませんでした。奇妙なのは、アセンブリがDNNライブラリプロジェクトのBinフォルダにあり、Windowsのサービスが実行されているフォルダにアセンブリがあることです。実際のSqlDataProviderプロジェクトもソリューションに読み込まれます。なぜ私はランタイム環境がアセンブリを見つけることができないのか理解できません。

このようなことを誰かが試したことがありますか、DNNソースを踏んでいる間にアセンブリが見つからない原因を知っていますか?私は、BuildManager.GetType以外のものを使って、SQLプロバイダ型のインスタンスを取得するほうがいいですか?これは将来的に起こる各DNNのアップグレードと非常に壊れやすいことになるだろうと

答えて

6

クリス、

は、正直なところ、あなたのニーズに応じて、私は、これに別の方法をやって見ます。

私は、DNNが既に持っている「一括インストール」オプションを使用する方がいいでしょう。サービスをモジュールのzipを/ install/modulesフォルダにアップロードしてから、そこから/install/install.aspx?mode=installresourcesを呼び出すと、完了です!

結果を解析するためにサードパーティのソリューションが必要な場合は、Windowsサービスを通過させてHTML応答を取得し、解析して成功を検証します。

+0

一括インストールオプションがありませんでした。それは私のために働くように聞こえる。それはどこのドキュメントがありますか? HTMLレスポンスの正確な内容は何ですか?バルクインストールが成功したことをどのように知ることができますか? –

+0

Chris - AFAIKあまりドキュメンテーションはありません。私はいつかすぐにブログ記事を書き上げようとすることができます。 HTMLレスポンスは非常に構造化されており、成功/失敗を検証するために解析するのが簡単でなければなりません。しかし、私はそれを見てから少しです。 –

+0

あなたが投稿できるものは何でも参考になります。私はそれを実験し、私がどれだけ遠くまで行くかを見ていきます。 –

関連する問題