2009-04-23 17 views
2

私の友人はPHPでコンテンツ管理システムを構築しています。C#、ASP.NET 3.5 - 実行時にコードをロード

PHPのコードが実行時に評価されたスクリプト言語であるため、実行時に...コードを追加する非常に簡単です(と思う:フォーラム、お問い合わせフォームなど)

をASP.NET(これはコンパイルされています)で同じことをやっています。シンプルではありません。

コードを動的にロードしてライブWebアプリケーション内で使用する方法について考えましたか?

+0

何が成果ですか? –

+0

@Ian Quigley:私の質問を更新しました。 – roosteronacid

+0

もっと良い答えが必要な場合は、.dlls(コンパイル済みコード)やソースファイルを含めるかどうかを知ることは非常に役に立ちますか?あなたが矛盾する答えの2つのセットを得ているので、私は思っています。 –

答えて

2

私はこれにApp Codeフォルダを使用できると思います。開発者がdllをアップロードすることを許可されていないソリューションを聞いたので、ちょうど時間内にコンパイルされたアプリケーションコードフォルダを使用しました。クラスを追加すると、必要に応じてコンパイルされます。

See here

0

オープンソースBlogEngine.NETは、開発者は、あなたが有用見つけるかもしれない拡張を書くことができるようにすることでいくつかのコードを持っています。拡張機能は、Global.asax経由でアプリケーションの起動時に読み込まれます。

1

何がしなければならないことは

プラグインベースのプログラミングは、私はここの回答であなたに説明できるものではありませんが、あなたはアセンブリは、あなたがとして使用するインターフェイスを作成するプラグインベースの構造を作ることですモジュール(プラグイン)を実装する必要があります。 その後、実行時にプラグインフォルダ内のすべてのdllを読み込み、C#reflection、より具体的にはActivatorクラスを使用します。

これは運が良ければ、Windowsプログラミングと同じ原則です。あなたは、Visual Studio 2008を使用している場合は

1

、既定のWebサイトのモデルは、コンパイル済みのDLLを使用し、ちょうど私が信じているその場でコードビハインドをコンパイルしません。前述のように、App Codeフォルダを使用することもできます。前述のようにBlogEngine.NETをチェックアウトすることはおそらく、かなり良い出発点であり、オンザフライでコンパイルされた素敵な拡張アーキテクチャを持っているからです。

コードビハインドファイルを持っておらず、コードを<script language="C#" runat="server"></script>に置くこともできます。<script language="C#" runat="server"></script>は、Visual Studio Expressのエディションがデフォルトで行うと考えています。

+0

"File | New ... | Web Site"モデルでは、 "コンパイル済みのオンザフライ"アプリケーションが提供されます。 "File | New ... | Project | Web | Web Application"を選択すると、 "デプロイ前にコンパイル済み" Webアプリケーションが作成されます。 両方とも賛否両論があります。 –

1

プロバイダの設定はいつも行います。

try 
{ 
    string assembly = ConfigurationSettings.AppSettings["DataProvider"].Split(',')[0]; 
    string classname = ConfigurationSettings.AppSettings["DataProvider"].Split(',')[1]; 
    m_Instance = (SqlDataProvider)Activator.CreateInstance(assembly,classname).Unwrap(); 
} 
catch(Exception ex) 
{ 
    Common.Error.Write("Getting Data Provider From Config"); 
} 

コンフィグ設定は次のようになります。

<add key="DataProvider" value="MyDll,MyDll.Data.SqlDataProvider"/> 

しかし、それは強く型付けされた言語であることから、あなたのコードは、タイプまたはインターフェイスへの参照を持っている必要があります。あなたは対処方法がわからないコードを持ち込むことはできません。あなたが1日中リフレクションでコーディングすることを望んでいない限り。

関連する問題