58

私はWebアプリケーションプロジェクトを持っています。DLL を生成し、別のプロジェクトにインポートしました。実装しVirtualPathProviderました。

この Web サイトをフォローしました: http://support.microsoft.com/kb/910441/en-us?spid=8940&sid=global、別のサイト マスターを追加するまで、すべてが機能します。

  1. Build Action を Embedded Resourceに追加site_export.masterして変更しました。
  2. 新しいサイト マスターを使用するようにページを変更しました。
  3. GetManifestResourceStream()nullロードすると戻りますsite_export.master
  4. DLLに存在するGetManifestResourceNames()かどうかを確認するために呼び出しますが、存在します。site_export.masterリストにあります。すべての名前空間が一致します。ここには名前空間をリストしませんでした。

GetManifestResourceStream()新しい をロードできないのはなぜsite_export.masterですか? それはうまくロードされますsite.master。DLL 内の他のファイルを確認できるので、DLL がロードされていることがわかります。

4

5 に答える 5

97

次の問題を覚えておいてください...

ステップ1。埋め込みリソースに設定されたアクションのビルドを参照してください

C#のGetManifestResourceStream Gotcha

ステップ2。GetManifestResourceStream ()がnullを返すnamespace.resourcenameを参照してください。

ReflectionPermission実際には、別のアセンブリのプライベートリソースにアクセスし、呼び出し元にReflectionPermissionFlag.MemberAccessフラグがない場合、このメソッドはnullを返します。

于 2012-05-27T09:53:53.583 に答える
85

サイドヒント。正しいアセンブリに正しい名前を付けていることを確認するには: ターゲット アセンブリで使用可能なすべてのリソースをダンプして評価します。

string[] names = assembly.GetManifestResourceNames();

(私の場合、別のアセンブリの名前空間を悪用しました)

于 2014-03-16T21:16:54.940 に答える
11

私はそれを機能させるためにこれをしました:

ステップ 1:リソース (私の場合は CRDF.xsl) を選択し、右クリック > [プロパティ] をクリックします。Build Action を「EmbeddedResource」に設定し、Logical Name を任意の名前 (CRDFXSL など) に設定します。

ステップ 2 :ソース コードを次のように変更します。

Assembly _assembly;
  _assembly = Assembly.GetExecutingAssembly();         
  xslStream = _assembly.GetManifestResourceStream("CRDFXSL");
  _xmlReader = XmlReader.Create(xslStream);

したがって、すべてがスムーズに進みました..

于 2016-10-21T07:07:25.800 に答える
0

これを試して:

Dim ctx As Windows.ApplicationModel.Resources.Core.ResourceContext = New Windows.ApplicationModel.Resources.Core.ResourceContext()
ctx.Languages = {Globalization.CultureInfo.CurrentUICulture.Name}
Dim rmap As Windows.ApplicationModel.Resources.Core.ResourceMap = Windows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMap
Dim res = rmap.GetValue("Assets/sample.png", ctx)
Dim resFile = Await res.GetValueAsFileAsync

すべてのWindows.ApplicationModel.Resources.Core.ResourceManager.Current.MainResourceMapリソースを一覧表示します。

于 2014-03-31T17:19:45.897 に答える