1. ホーム
  2. c#

[解決済み] .Net Core ライブラリへの組み込みリソース

2023-05-14 04:16:30

質問

私は .Net Core を調べ始めたばかりですが、古典的なリソースやリソースに似たものを見かけません。古典的な .Net クラス ライブラリでは、たとえば、いくつかのスクリプトを含むテキスト ファイルを私のプロジェクトに追加することができましたが、これらのファイルをプロジェクトのリソースに追加することができます。その後、私は次の方法で簡単にそれを使用することができました。

Connection.Execure(Properties.Resources.MySuperScript);

.Net Coreのライブラリにはそのような機能はないようですね。少なくとも私には見えません。 ライブラリに埋め込まれたリソースとしていくつかの静的データを格納するための.Net Coreの代替手段はありますか?また、それが存在する場合、どのようにそれを使用するのですか?

どのように解決するのですか?

UPDATEしてください。

.NET Core 1.1 以降では、以下のようになりました。 project.json を削除し .csproj のファイルに戻すことができます。 これはステップ2を変更しますが、それほど大きな変更ではありません。必要な行は非常によく似ています。

<ItemGroup>
  <Content Remove="_fonts/OpenSans.ttf" />
  <Content Remove="_fonts/OpenSans-Bold.ttf" />
  <Content Remove="_fonts/OpenSans-Italic.ttf" />
</ItemGroup>
<ItemGroup>
  <EmbeddedResource Include="_fonts/OpenSans.ttf" />
  <EmbeddedResource Include="_fonts/OpenSans-Bold.ttf" />
  <EmbeddedResource Include="_fonts/OpenSans-Italic.ttf" />
</ItemGroup>

同じような *.tff の形式があるかもしれません。未確認です。

ステップ1、3は変更なし。


.NET Core 1.0プロジェクトで埋め込みリソースを使用するには、以下を実行します。

  1. 通常通り、埋め込みファイルを追加します。

    例: "_fonts"というディレクトリにあるいくつかのFONTファイル。

  2. 関連リソースを含めるために "project.json" を修正します。

    私の場合

     "buildOptions": {
        "embed": {
          "include": [
            "_fonts/*.ttf"    
          ]
        } 
      },
    
    
  3. コードで埋め込まれたリソースにアクセスします。

    var assembly = typeof(MyLibrary.MyClass).GetTypeInfo().Assembly;
    Stream resource = assembly.GetManifestResourceStream("MyLibrary._fonts.OpenSans.ttf");
    
    

    重要なポイントは、正しい名前で GetManifestResourceStream の呼び出しに を使用する必要があります。 [assembly name].[directory].[file name] .