次の方法で共有


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
    シャドウ コピー先の絶対パス。

実装

_AppDomain.SetCachePath

例外

例外の種類 条件
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 セキュリティ:

参照

AppDomain クラス | AppDomain メンバ | System 名前空間 | CachePath