Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
System Namespace
AppDomain Class
 RelativeSearchPath Property

  Switch on low bandwidth view
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
AppDomain..::.RelativeSearchPath Property

Gets the path under the base directory where the assembly resolver should probe for private assemblies.

Namespace:  System
Assembly:  mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
Public ReadOnly Property RelativeSearchPath As String
Visual Basic (Usage)
Dim instance As AppDomain
Dim value As String

value = instance.RelativeSearchPath
C#
public string RelativeSearchPath { get; }
Visual C++
public:
virtual property String^ RelativeSearchPath {
    String^ get () sealed;
}
JScript
public final function get RelativeSearchPath () : String

Property Value

Type: System..::.String
The path under the base directory where the assembly resolver should probe for private assemblies.

Implements

_AppDomain..::.RelativeSearchPath
ExceptionCondition
AppDomainUnloadedException

The operation is attempted on an unloaded application domain.

Private assemblies are deployed in the same directory structure as the application. If the path specified by the RelativeSearchPath property is not under AppDomainSetup..::.ApplicationBase, it is ignored.

This property returns the value set using AppDomainSetup..::.PrivateBinPath.

The following example creates a new application domain that uses shadow copying. The example uses the RelativeSearchPath property to retrieve the base directory for private assemblies, and then displays it to the console.

To compile and run this example, you must insert the valid display names of assemblies where indicated in the code.

Visual Basic
Imports System
Imports System.Security.Policy
 'for evidence object

Class ADProperties

    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()
        Console.WriteLine("ShadowCopyFiles turned on: " & domain.ShadowCopyFiles)

        ' 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 'ADProperties

C#
using System;
using System.Security.Policy;  //for evidence object
namespace AppDomainSnippets
{
    class ADProperties
    {
        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();
            Console.WriteLine("ShadowCopyFiles turned on: " + domain.ShadowCopyFiles);

            // 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);
        }
    }
}

Visual C++
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();
   Console::WriteLine( "ShadowCopyFiles turned on: {0}", domain->ShadowCopyFiles );

   // 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 );
}


Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Deprecated Methods      jpsstavares   |   Edit   |   Show History
This example uses the AppendPrivatePath method which are deprecated. So what's the message here? Why are those methods deprecated and should we used them or not?


Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker