AssemblyBuilder.AddResourceFile メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
このアセンブリに既存のリソース ファイルを追加します。
オーバーロード
AddResourceFile(String, String) |
このアセンブリに既存のリソース ファイルを追加します。 |
AddResourceFile(String, String, ResourceAttributes) |
このアセンブリに既存のリソース ファイルを追加します。 |
AddResourceFile(String, String)
このアセンブリに既存のリソース ファイルを追加します。
public:
void AddResourceFile(System::String ^ name, System::String ^ fileName);
public void AddResourceFile (string name, string fileName);
member this.AddResourceFile : string * string -> unit
Public Sub AddResourceFile (name As String, fileName As String)
パラメーター
- name
- String
リソースの論理名。
- fileName
- String
論理名のマップ先物理ファイル名 (.resources ファイル)。 これにパスが含まれていてはなりません。ファイルは、追加先アセンブリと同じディレクトリの中になければなりません。
例外
name
は以前に定義されています。
- または -
アセンブリには、fileName
という名前の別のファイルがあります。
- または -
name
の長さが 0 です。
- または -
fileName
の長さが 0 か、または fileName
にパスが含まれる場合。
name
または fileName
が null
です。
ファイル fileName
が見つかりません。
呼び出し元に、必要なアクセス許可がありません。
例
次のコード サンプルでは、 を使用して、動的に作成されたアセンブリにリソース ファイルをアタッチする方法を AddResourceFile
示します。
using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class AsmBuilderGetFileDemo
{
public:
static String^ myResourceFileName = "MyResource.txt";
static FileInfo^ CreateResourceFile()
{
FileInfo^ f = gcnew FileInfo( myResourceFileName );
StreamWriter^ sw = f->CreateText();
sw->WriteLine( "Hello, world!" );
sw->Close();
return f;
}
static AssemblyBuilder^ BuildDynAssembly()
{
String^ myAsmFileName = "MyAsm.dll";
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew 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;
}
};
int main()
{
FileStream^ myResourceFS = nullptr;
AsmBuilderGetFileDemo::CreateResourceFile();
Console::WriteLine( "The contents of MyResource.txt, via GetFile:" );
AssemblyBuilder^ myAsm = AsmBuilderGetFileDemo::BuildDynAssembly();
try
{
myResourceFS = myAsm->GetFile( AsmBuilderGetFileDemo::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 = gcnew FileStream( AsmBuilderGetFileDemo::myResourceFileName,FileMode::Open );
}
StreamReader^ sr = gcnew StreamReader( myResourceFS,System::Text::Encoding::ASCII );
Console::WriteLine( sr->ReadToEnd() );
sr->Close();
}
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();
}
}
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
End Class
注釈
fileName
は、他の永続化可能なモジュール、スタンドアロン マネージド リソース、またはスタンドアロン マニフェスト ファイルと同じにすることはできません。
ファイル内のマネージド リソースはパブリックであると見なされます。
指定したリソース ファイルは、アセンブリが保存されるディレクトリに存在する必要があります。
注意
.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグを指定するReflectionPermissionFlag.ReflectionEmit必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。
適用対象
AddResourceFile(String, String, ResourceAttributes)
このアセンブリに既存のリソース ファイルを追加します。
public:
void AddResourceFile(System::String ^ name, System::String ^ fileName, System::Reflection::ResourceAttributes attribute);
public void AddResourceFile (string name, string fileName, System.Reflection.ResourceAttributes attribute);
member this.AddResourceFile : string * string * System.Reflection.ResourceAttributes -> unit
Public Sub AddResourceFile (name As String, fileName As String, attribute As ResourceAttributes)
パラメーター
- name
- String
リソースの論理名。
- fileName
- String
論理名のマップ先物理ファイル名 (.resources ファイル)。 これにパスが含まれていてはなりません。ファイルは、追加先アセンブリと同じディレクトリの中になければなりません。
- attribute
- ResourceAttributes
リソースの属性。
例外
name
は以前に定義されています。
- または -
アセンブリには、fileName
という名前の別のファイルがあります。
- または -
name
の長さが 0、または fileName
の長さが 0 の場合。
- または -
fileName
にパスが含まれています。
name
または fileName
が null
です。
ファイル fileName
が見つからない場合。
呼び出し元に、必要なアクセス許可がありません。
例
次のコード サンプルでは、 を使用して、動的に作成されたアセンブリにリソース ファイルをアタッチする方法を AddResourceFile
示します。
using namespace System;
using namespace System::IO;
using namespace System::Threading;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
ref class AsmBuilderGetFileDemo
{
public:
static String^ myResourceFileName = "MyResource.txt";
static FileInfo^ CreateResourceFile()
{
FileInfo^ f = gcnew FileInfo( myResourceFileName );
StreamWriter^ sw = f->CreateText();
sw->WriteLine( "Hello, world!" );
sw->Close();
return f;
}
static AssemblyBuilder^ BuildDynAssembly()
{
String^ myAsmFileName = "MyAsm.dll";
AppDomain^ myDomain = Thread::GetDomain();
AssemblyName^ myAsmName = gcnew 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;
}
};
int main()
{
FileStream^ myResourceFS = nullptr;
AsmBuilderGetFileDemo::CreateResourceFile();
Console::WriteLine( "The contents of MyResource.txt, via GetFile:" );
AssemblyBuilder^ myAsm = AsmBuilderGetFileDemo::BuildDynAssembly();
try
{
myResourceFS = myAsm->GetFile( AsmBuilderGetFileDemo::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 = gcnew FileStream( AsmBuilderGetFileDemo::myResourceFileName,FileMode::Open );
}
StreamReader^ sr = gcnew StreamReader( myResourceFS,System::Text::Encoding::ASCII );
Console::WriteLine( sr->ReadToEnd() );
sr->Close();
}
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();
}
}
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
End Class
注釈
fileName
は、他の永続化可能なモジュール、スタンドアロン マネージド リソース、またはスタンドアロン マニフェスト ファイルと同じにすることはできません。
属性には、マネージド リソースを指定できます。
指定したリソース ファイルは、アセンブリが保存されるディレクトリに存在する必要があります。
注意
.NET Framework 2.0 Service Pack 1 以降では、このメンバーは フラグを指定するReflectionPermissionFlag.ReflectionEmit必要ReflectionPermissionがなくなりました。 (リフレクション出力のセキュリティの問題に関するページを参照してください)。この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。
適用対象
.NET