2016-05-17 4 views
1

プラグインで拡張可能なWebアプリケーション(C#でASP.Net MVC 5)を作成しています。この目的のために、ユーザーがプラグインをロードするために実装する必要があるすべてのインターフェイスを含む小さなSDKを作成しました。それはうまくいきます。CでDLLアセンブリの静的ファイルを取得する#

プラグインを作成するには、Visual Studioで新しいクラスライブラリプロジェクトを作成し、SDKアセンブリをインポートする必要があります。

私はプラグイン(これは現在のdll)で静的なファイルをパックできるようにします。これらの静的ファイルは、html、css、js、imagesなどです。 これらのファイルは、自分のサーバーで取得するために特定のフォルダになければなりません。少なくとも、それは私がやろうとしていることです。だから、プラグインのインストールでは、私はプラグインの特定のフォルダのすべてのファイルをサーバーのプラグイン固有のフォルダにコピーしたいと思います。

質問:DLL内の静的ファイルにどうやってアクセスできますか?私はアセンブリのGetManifestResourceNamesメソッドを使用するために読むが、それは動作していません。

var assembly = Assembly.LoadFrom(pluginPath); 
log.Debug("Number of ressources: " + assembly.GetManifestResourceNames().Length); 
foreach(var resName in assembly.GetManifestResourceNames()) 
{ 
    log.Debug(resName); 
} 

をしかし、出力は常に「ressourcesの数:0」である:テストのために

、私はこれをやっているGetManifestResourceNamesは空の配列を返すようにします。

私はプラグインが正しく読み込まれていることを知っています。私はすべてのクラスやものにアクセスできます。何か間違っているのですか?私はJava開発者の一人であるため、C#は新しくなっています。

ありがとうございました!

答えて

2

私は小さなテストプロジェクトを作成し、コードは正常に動作し、リソースの名前を正しく列挙しました。

静的ファイルを正しく追加していない可能性があります。静的ファイルをプロジェクトに追加するときは、プロパティウィンドウでビルドアクションを「埋め込みリソース」に変更してください。

+0

ありがとうございました!それはそれをした!これは「組み込みリソース」の代わりに「コンテンツ」に設定されていました。すべての静的ファイルとtypescript-filesの出力jsファイルに対してこのビルドアクションを定義する方法はありますか? – mesx

関連する問題