AppDomain.SetShadowCopyPath(String) 方法

定义

注意

AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. https://go.microsoft.com/fwlink/?linkid=14202

注意

AppDomain.SetShadowCopyPath has been deprecated and is not supported.

注意

AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. http://go.microsoft.com/fwlink/?linkid=14202

注意

Use AppDomainSetup.ShadowCopyDirectories

确定指定目录路径为要进行影像复制的程序集的位置。

public:
 void SetShadowCopyPath(System::String ^ path);
public:
 virtual void SetShadowCopyPath(System::String ^ path);
[System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. https://go.microsoft.com/fwlink/?linkid=14202")]
public void SetShadowCopyPath (string? path);
[System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated and is not supported.")]
public void SetShadowCopyPath (string? path);
[System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public void SetShadowCopyPath (string path);
public void SetShadowCopyPath (string path);
[System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. http://go.microsoft.com/fwlink/?linkid=14202")]
[System.Security.SecurityCritical]
public void SetShadowCopyPath (string path);
[System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. https://go.microsoft.com/fwlink/?linkid=14202")]
public void SetShadowCopyPath (string path);
[System.Obsolete("Use AppDomainSetup.ShadowCopyDirectories")]
public void SetShadowCopyPath (string path);
[<System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. https://go.microsoft.com/fwlink/?linkid=14202")>]
member this.SetShadowCopyPath : string -> unit
[<System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated and is not supported.")>]
member this.SetShadowCopyPath : string -> unit
[<System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
member this.SetShadowCopyPath : string -> unit
abstract member SetShadowCopyPath : string -> unit
override this.SetShadowCopyPath : string -> unit
[<System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
abstract member SetShadowCopyPath : string -> unit
override this.SetShadowCopyPath : string -> unit
[<System.Obsolete("AppDomain.SetShadowCopyPath has been deprecated. Please investigate the use of AppDomainSetup.ShadowCopyDirectories instead. http://go.microsoft.com/fwlink/?linkid=14202")>]
[<System.Security.SecurityCritical>]
abstract member SetShadowCopyPath : string -> unit
override this.SetShadowCopyPath : string -> unit
[<System.Obsolete("Use AppDomainSetup.ShadowCopyDirectories")>]
member this.SetShadowCopyPath : string -> unit
[<System.Obsolete("Use AppDomainSetup.ShadowCopyDirectories")>]
abstract member SetShadowCopyPath : string -> unit
override this.SetShadowCopyPath : string -> unit
Public Sub SetShadowCopyPath (path As String)

参数

path
String

目录名列表,各名称用分号隔开。

实现

属性

例外

在卸载的应用程序域上尝试该操作。

示例

此方法现已过时,不应用于新开发。

using namespace System;
using namespace System::Security::Policy;

//for evidence Object*
int main()
{
   AppDomainSetup^ setup = gcnew 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: {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( "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( String::Concat( ___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 );
}
using System;
using System.Security.Policy;
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);
        }
    }
}
open System

let setup = 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.
let adevidence = AppDomain.CurrentDomain.Evidence

// Create a new application ___domain.
let ___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.
printfn $"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" |> ignore
// This will not be copied.
// You must supply a valid fully qualified assembly name here.
___domain.Load "Assembly2 text name, Version, Culture, PublicKeyToken" |> ignore

// 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" |> ignore

// Unload the ___domain.
AppDomain.Unload ___domain
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
End Class

注解

默认情况下,卷影副本包括通过探测找到的所有程序集。 该方法 SetShadowCopyPath 将卷影副本限制为由指定的 path目录中的程序集。

该方法 SetShadowCopyPath 不指定要搜索程序集的其他目录。 要进行卷影复制的程序集必须已位于搜索路径中,例如在搜索路径下 BaseDirectory。 该方法 SetShadowCopyPath 指定哪些搜索路径有资格进行卷影复制。

此方法设置 ShadowCopyDirectories 与此实例关联的内部 AppDomainSetup 属性。

有关卷影复制的详细信息,请参阅 卷影复制程序集

适用于

另请参阅