AppDomain.ClearShadowCopyPath Method
.NET Framework 1.1
Resets the list of directories containing shadow copied assemblies to the empty string ("").
[Visual Basic] Public Overridable Sub ClearShadowCopyPath() Implements _ _AppDomain.ClearShadowCopyPath [C#] public virtual void ClearShadowCopyPath(); [C++] public: virtual void ClearShadowCopyPath(); [JScript] public function ClearShadowCopyPath();
Implements
_AppDomain.ClearShadowCopyPath
Exceptions
| Exception Type | Condition |
|---|---|
| AppDomainUnloadedException | Operations are attempted on an unloaded application domain. |
| SecurityException | The caller does not have the correct permissions. See the requirements section. |
Remarks
The shadow copy path is a list of directories where shadow copied assemblies are stored.
For more information, see AppDomainSetup.ShadowCopyDirectories.
Example
[Visual Basic] 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] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button
in the upper-left corner of the page.
Requirements
Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family
.NET Framework Security:
- SecurityPermission for using this method. Associated enumeration: SecurityAction.LinkDemand.
- ReflectionPermission when invoked late-bound through mechanisms such as Type.InvokeMember. Associated enumeration: ReflectionPermissionFlag.MemberAccess.
See Also
AppDomain Class | AppDomain Members | System Namespace | String.Empty