次の方法で共有


AssemblyBuilder.AddResourceFile メソッド (String, String)

既存のリソース ファイルをこのアセンブリに追加します。

Overloads Public Sub AddResourceFile( _
   ByVal name As String, _   ByVal fileName As String _)
[C#]
public void AddResourceFile(stringname,stringfileName);
[C++]
public: void AddResourceFile(String* name,String* fileName);
[JScript]
public function AddResourceFile(
   name : String,fileName : String);

パラメータ

  • name
    リソースの論理名。
  • fileName
    論理名を割り当てる対象の物理ファイル名 (.resources ファイル)。パスを含めないでください。

例外

例外の種類 条件
ArgumentException name が既に定義されています。

または

アセンブリ内に fileName という名前のファイルがもう 1 つあります。

または

name の長さが 0 です。

または

fileName の長さがゼロか、fileName にパスが含まれています。

ArgumentNullException name または fileName が null 参照 (Visual Basic では Nothing) です。
FileNotFoundException fileName に指定したファイルが見つからない場合。
SecurityException 呼び出し元に、必要なアクセス許可がありません。

解説

fileName は、他の永続可能モジュール、スタンドアロン マネージ リソース、またはスタンドアロン マニフェスト ファイルの名前と同じにしないでください。

ファイルのマネージ リソースは、パブリックであると見なされます。

使用例

[Visual Basic, C#, C++] 次のコード例は、 AddResourceFile を使用して、動的に作成されたアセンブリにリソース ファイルを結び付ける方法を示しています。

 

Imports System
Imports System.IO
Imports System.Threading
Imports System.Reflection
Imports System.Reflection.Emit

 _

Class AsmBuilderGetFileDemo
   
   Private Shared myResourceFileName As String = "MyResource.txt"
   
   
   Private Shared Function CreateResourceFile() As FileInfo
      
      Dim f As New FileInfo(myResourceFileName)
      Dim sw As StreamWriter = f.CreateText()
      
      sw.WriteLine("Hello, world!")
      
      sw.Close()
      
      Return f

   End Function 'CreateResourceFile
    
   
   Private Shared Function BuildDynAssembly() As AssemblyBuilder
      
      Dim myAsmFileName As String = "MyAsm.dll"
      
      Dim myDomain As AppDomain = Thread.GetDomain()
      Dim myAsmName As New AssemblyName()
      myAsmName.Name = "MyDynamicAssembly"
      
      Dim myAsmBuilder As AssemblyBuilder = myDomain.DefineDynamicAssembly(myAsmName, _
                        AssemblyBuilderAccess.RunAndSave)
      
      myAsmBuilder.AddResourceFile("MyResource", myResourceFileName)
      
      ' To confirm that the resource file has been added to the manifest,
      ' we will save the assembly as MyAsm.dll. You can view the manifest
      ' and confirm the presence of the resource file by running 
      ' "ildasm MyAsm.dll" from the prompt in the directory where you executed
      ' the compiled code. 
      myAsmBuilder.Save(myAsmFileName)
      
      Return myAsmBuilder

   End Function 'BuildDynAssembly
    
   
   Public Shared Sub Main()
      
      Dim myResourceFS As FileStream = Nothing
      
      CreateResourceFile()
      
      Console.WriteLine("The contents of MyResource.txt, via GetFile:")
      
      Dim myAsm As AssemblyBuilder = BuildDynAssembly()
      
      Try

         myResourceFS = myAsm.GetFile(myResourceFileName)

      Catch nsException As NotSupportedException
     
     Console.WriteLine("---")
     Console.WriteLine("System.Reflection.Emit.AssemblyBuilder.GetFile is not supported " + _
                 "in this SDK build.")
     Console.WriteLine("The file data will now be retrieved directly, via a new FileStream.")
     Console.WriteLine("---")
     myResourceFS = New FileStream(myResourceFileName, FileMode.Open) 

      End Try
      
      Dim sr As New StreamReader(myResourceFS, System.Text.Encoding.ASCII)
      Console.WriteLine(sr.ReadToEnd())
      sr.Close()

   End Sub 'Main 

End Class 'AsmBuilderGetFileDemo


[C#] 

using System;
using System.IO;
using System.Threading;
using System.Reflection;
using System.Reflection.Emit;

class AsmBuilderGetFileDemo

{
   private static string myResourceFileName = "MyResource.txt";

   private static FileInfo CreateResourceFile() 
   {

         FileInfo f = new FileInfo(myResourceFileName); 
    StreamWriter sw = f.CreateText();

    sw.WriteLine("Hello, world!");

    sw.Close();

    return f;

   }

   private static AssemblyBuilder BuildDynAssembly()
   {

    string myAsmFileName = "MyAsm.dll";
    
    AppDomain myDomain = Thread.GetDomain();
    AssemblyName myAsmName = new AssemblyName();
    myAsmName.Name = "MyDynamicAssembly";    

    AssemblyBuilder myAsmBuilder = myDomain.DefineDynamicAssembly(
                        myAsmName,
                        AssemblyBuilderAccess.RunAndSave);

    myAsmBuilder.AddResourceFile("MyResource", myResourceFileName);

    // To confirm that the resource file has been added to the manifest,
    // we will save the assembly as MyAsm.dll. You can view the manifest
    // and confirm the presence of the resource file by running 
    // "ildasm MyAsm.dll" from the prompt in the directory where you executed
    // the compiled code. 

    myAsmBuilder.Save(myAsmFileName);    

    return myAsmBuilder;

   }

   public static void Main() 
   {

    FileStream myResourceFS = null;

    CreateResourceFile();

    Console.WriteLine("The contents of MyResource.txt, via GetFile:");

    AssemblyBuilder myAsm = BuildDynAssembly();

    try 
        {
       myResourceFS = myAsm.GetFile(myResourceFileName);
        }
    catch (NotSupportedException)
    {
       Console.WriteLine("---");
       Console.WriteLine("System.Reflection.Emit.AssemblyBuilder.GetFile\nis not supported " +
                 "in this SDK build.");
       Console.WriteLine("The file data will now be retrieved directly, via a new FileStream.");
       Console.WriteLine("---");
       myResourceFS = new FileStream(myResourceFileName, 
                     FileMode.Open);
    }
     
    StreamReader sr = new StreamReader(myResourceFS, System.Text.Encoding.ASCII);
    Console.WriteLine(sr.ReadToEnd());
    sr.Close();

   }

}


[C++] 

#using <mscorlib.dll>

using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;

__gc class AsmBuilderGetFileDemo {
public:
   static String* myResourceFileName = S"MyResource.txt";

   static FileInfo* CreateResourceFile() {
      FileInfo* f = new FileInfo(myResourceFileName);
      StreamWriter*  sw = f->CreateText();

      sw->WriteLine(S"Hello, world!");
      sw->Close();
      return f;
   }

   static AssemblyBuilder* BuildDynAssembly() {

      String* myAsmFileName = S"MyAsm.dll";

      AppDomain*  myDomain = Thread::GetDomain();
      AssemblyName* myAsmName = new AssemblyName();
      myAsmName->Name = S"MyDynamicAssembly";

      AssemblyBuilder*  myAsmBuilder = myDomain->DefineDynamicAssembly(myAsmName,
         AssemblyBuilderAccess::RunAndSave);

      myAsmBuilder->AddResourceFile(S"MyResource", myResourceFileName);

      // To confirm that the resource file has been added to the manifest,
      // we will save the assembly as MyAsm.dll. You can view the manifest
      // and confirm the presence of the resource file by running
      // "ildasm MyAsm.dll" from the prompt in the directory where you executed
      // the compiled code.

      myAsmBuilder->Save(myAsmFileName);

      return myAsmBuilder;
   }
};

int main() {

   FileStream* myResourceFS = 0;

   AsmBuilderGetFileDemo::CreateResourceFile();

   Console::WriteLine(S"The contents of MyResource.txt, via GetFile:");

   AssemblyBuilder*  myAsm = AsmBuilderGetFileDemo::BuildDynAssembly();

   try {
      myResourceFS = myAsm->GetFile(AsmBuilderGetFileDemo::myResourceFileName);
   } catch (NotSupportedException*) {
      Console::WriteLine(S"---");
      Console::WriteLine(S"System::Reflection::Emit::AssemblyBuilder::GetFile\nis not supported in this SDK build.");
      Console::WriteLine(S"The file data will now be retrieved directly, via a new FileStream.");
      Console::WriteLine(S"---");
      myResourceFS = new FileStream(AsmBuilderGetFileDemo::myResourceFileName,
         FileMode::Open);
   }

   StreamReader* sr = new StreamReader(myResourceFS, System::Text::Encoding::ASCII);
   Console::WriteLine(sr->ReadToEnd());
   sr->Close();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

.NET Framework セキュリティ:

参照

AssemblyBuilder クラス | AssemblyBuilder メンバ | System.Reflection.Emit 名前空間 | AssemblyBuilder.AddResourceFile オーバーロードの一覧