AppDomain.SetCachePath メソッド
指定したディレクトリ パスを、アセンブリのシャドウ コピー先として設定します。
Public Overridable Sub SetCachePath( _
ByVal path As String _) Implements _AppDomain.SetCachePath
[C#]
public virtual void SetCachePath(stringpath);
[C++]
public: virtual void SetCachePath(String* path);
[JScript]
public function SetCachePath(
path : String);
パラメータ
- path
シャドウ コピー先の絶対パス。
実装
例外
例外の種類 | 条件 |
---|---|
AppDomainUnloadedException | 操作が、アンロードされたアプリケーション ドメインで試行されています。 |
SecurityException | 呼び出し元に、正しいアクセス許可がありません。要件のセクションを参照してください。 |
使用例
Imports System
Imports System.Security.Policy
'for evidence object
Class ADShadowCopy
'Entry point which delegates to C-style main Private Function
' Public Overloads Shared Sub Main()
' Main(System.Environment.GetCommandLineArgs())
' End Sub
Public Overloads Shared Sub Main(args() As String)
Dim setup As New AppDomainSetup()
' Shadow copying will not work unless the application has a name.
setup.ApplicationName = "MyApplication"
'Create evidence for the new application domain from evidence of
' current application domain.
Dim adevidence As Evidence = AppDomain.CurrentDomain.Evidence
' Create a new application domain.
Dim domain As AppDomain = AppDomain.CreateDomain("MyDomain", adevidence, setup)
' MyAssembly.dll is located in the Assemblies subdirectory.
domain.AppendPrivatePath("Assemblies")
' MyOtherAssembly.dll and MyThirdAssembly.dll are located in the
' MoreAssemblies subdirectory.
domain.AppendPrivatePath("MoreAssemblies")
' Display the relative search path.
Console.WriteLine(("RelativeSearchPath: " + domain.RelativeSearchPath))
' Because Load returns an Assembly object, the assemblies must be
' loaded into the current domain as well. This will fail unless the
' current domain also has these directories in its search path.
AppDomain.CurrentDomain.AppendPrivatePath("Assemblies")
AppDomain.CurrentDomain.AppendPrivatePath("MoreAssemblies")
' Save shadow copies to C:\Cache
domain.SetCachePath("C:\Cache")
' Shadow copy only the assemblies in the Assemblies directory.
domain.SetShadowCopyPath((domain.BaseDirectory + "Assemblies"))
' Turn shadow copying on.
domain.SetShadowCopyFiles()
' This will be copied.
' You must supply a valid fully qualified assembly name here.
domain.Load("Assembly1 text name, Version, Culture, PublicKeyToken")
' This will not be copied.
' You must supply a valid fully qualified assembly name here.
domain.Load("Assembly2 text name, Version, Culture, PublicKeyToken")
' When the shadow copy path is cleared, the CLR will make shadow copies
' of all private assemblies.
domain.ClearShadowCopyPath()
' MoreAssemblies\MyThirdAssembly.dll should be shadow copied this time.
' You must supply a valid fully qualified assembly name here.
domain.Load("Assembly3 text name, Version, Culture, PublicKeyToken")
' Unload the domain.
AppDomain.Unload(domain)
End Sub 'Main
End Class 'ADShadowCopy
[C#]
using System;
using System.Security.Policy; //for evidence object
namespace AppDomainSnippets
{
class ADShadowCopy
{
static void Main(string[] args)
{
AppDomainSetup setup = new AppDomainSetup();
// Shadow copying will not work unless the application has a name.
setup.ApplicationName = "MyApplication";
//Create evidence for the new application domain from evidence of
// current application domain.
Evidence adevidence = AppDomain.CurrentDomain.Evidence;
// Create a new application domain.
AppDomain domain = AppDomain.CreateDomain("MyDomain", adevidence, setup);
// MyAssembly.dll is located in the Assemblies subdirectory.
domain.AppendPrivatePath("Assemblies");
// MyOtherAssembly.dll and MyThirdAssembly.dll are located in the
// MoreAssemblies subdirectory.
domain.AppendPrivatePath("MoreAssemblies");
// Display the relative search path.
Console.WriteLine("RelativeSearchPath: " + domain.RelativeSearchPath);
// Because Load returns an Assembly object, the assemblies must be
// loaded into the current domain as well. This will fail unless the
// current domain also has these directories in its search path.
AppDomain.CurrentDomain.AppendPrivatePath("Assemblies");
AppDomain.CurrentDomain.AppendPrivatePath("MoreAssemblies");
// Save shadow copies to C:\Cache
domain.SetCachePath("C:\\Cache");
// Shadow copy only the assemblies in the Assemblies directory.
domain.SetShadowCopyPath(domain.BaseDirectory + "Assemblies");
// Turn shadow copying on.
domain.SetShadowCopyFiles();
// This will be copied.
// You must supply a valid fully qualified assembly name here.
domain.Load("Assembly1 text name, Version, Culture, PublicKeyToken");
// This will not be copied.
// You must supply a valid fully qualified assembly name here.
domain.Load("Assembly2 text name, Version, Culture, PublicKeyToken");
// When the shadow copy path is cleared, the CLR will make shadow copies
// of all private assemblies.
domain.ClearShadowCopyPath();
// MoreAssemblies\MyThirdAssembly.dll should be shadow copied this time.
// You must supply a valid fully qualified assembly name here.
domain.Load("Assembly3 text name, Version, Culture, PublicKeyToken");
// Unload the domain.
AppDomain.Unload(domain);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Security::Policy; //for evidence Object*
int main() {
AppDomainSetup* setup = new AppDomainSetup();
// Shadow copying will not work unless the application has a name.
setup->ApplicationName = S"MyApplication";
//Create evidence for the new application domain from evidence of
// current application domain.
Evidence* adevidence = AppDomain::CurrentDomain->Evidence;
// Create a new application domain.
AppDomain* domain = AppDomain::CreateDomain(S"MyDomain", adevidence, setup);
// MyAssembly.dll is located in the Assemblies subdirectory.
domain->AppendPrivatePath(S"Assemblies");
// MyOtherAssembly.dll and MyThirdAssembly.dll are located in the
// MoreAssemblies subdirectory.
domain->AppendPrivatePath(S"MoreAssemblies");
// Display the relative search path.
Console::WriteLine(S"RelativeSearchPath: {0}", domain->RelativeSearchPath);
// Because Load returns an Assembly Object*, the assemblies must be
// loaded into the current domain as well. This will fail unless the
// current domain also has these directories in its search path.
AppDomain::CurrentDomain->AppendPrivatePath(S"Assemblies");
AppDomain::CurrentDomain->AppendPrivatePath(S"MoreAssemblies");
// Save shadow copies to C:\Cache
domain->SetCachePath(S"C:\\Cache");
// Shadow copy only the assemblies in the Assemblies directory.
domain->SetShadowCopyPath(String::Concat(domain->BaseDirectory, S"Assemblies"));
// Turn shadow copying on.
domain->SetShadowCopyFiles();
// This will be copied.
// You must supply a valid fully qualified assembly name here.
domain->Load(S"Assembly1 text name, Version, Culture, PublicKeyToken");
// This will not be copied.
// You must supply a valid fully qualified assembly name here.
domain->Load(S"Assembly2 text name, Version, Culture, PublicKeyToken");
// When the shadow copy path is cleared, the CLR will make shadow copies
// of all private assemblies.
domain->ClearShadowCopyPath();
// MoreAssemblies\MyThirdAssembly.dll should be shadow copied this time.
// You must supply a valid fully qualified assembly name here.
domain->Load(S"Assembly3 text name, Version, Culture, PublicKeyToken");
// Unload the domain.
AppDomain::Unload(domain);
}
[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 セキュリティ:
- ReflectionPermission (Type.InvokeMember などの機構を通じて遅延バインディングが呼び出されるときに必要なアクセス許可) ReflectionPermissionFlag.MemberAccess (関連する列挙体)
- SecurityPermission (このメソッドを使用するために必要なアクセス許可) SecurityAction.LinkDemand (関連する列挙体)