.NET Tutorials, Forums, Interview Questions And Answers
Welcome :Guest
Sign In
Win Surprise Gifts!!!

Top 5 Contributors of the Month
david stephan
Gaurav Pal
Post New Web Links

Assembly is not unloaded on AppDomain unload

Posted By:      Posted Date: September 24, 2010    Points: 0   Category :.NET Framework

In order to attempt to unload an assembly I use the following code. Yet the assembly is not unloaded. The second call to Execute is performed yet it shouldn't be available anymore should it?

Also the HandlerOne.dll is still locked. As I load it from memory I wonder why it is still locked


    // Copy assembly in memory to prevent file lock
    System.IO.StreamReader reader;
    byte[] buf;
    using ( reader = new System.IO.StreamReader( "HandlerOne.dll", System.Text.Encoding.GetEncoding( 1252 ), false ) )
      buf = new byte[reader.BaseStream.Length];
      reader.BaseStream.Read( buf, 0, System.Convert.ToInt32( reader.BaseStream.Length ) );

    // Create a seperate AppDomain
    // Load the handler
    AppDomain d = AppDomain.CreateDomain( "one" );
    Assembly a = d.Load( buf );
    Type typ = a.GetType( "HandlerLib.HandlerOne", <

View Complete Post

More Related Resource Links

Am I able to pass an instance of the Assembly from one AppDomain to another?

I created a wrapper class which inherits from the MarshalByRefObject then loads and returns an assembly in this wrapper class. At the client application side, I used the new created AppDomain and call its CreateInstanceFromAndUnwrap method to create an instance of the wrapper class. Finally I was trying to get the returned assembly from the wrapper object and I got an exception indicating that the assembly file was not found. However if I just return the assembly's name from the wrapper class, it works great, nothing was wrong using that approach. I think maybe this is because that the Assembly class is not inherited from the MarshalByRefObject class so it doesn't make sense to pass between the application domains. I am not sure if my thinking is correct.

AppDomain.Unload effects Unable to evaluate expression because the code is optimized or a native fra

Hello, I create a custom AppDomain.Create().  I registered the Unhandled Exception Event from my custom AppDomain. In the Unhandled Exception Event i try to Unload my AppDomain with AppDomain.Unload. But this effects a "Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack." Have anyone a idea what i can do against this behaviour. greetints

AppDomain Unload does corrupt Thread Pool

Hi,I was just trying to run a simple scenario:1. Create AppDomain2. Use up all Worker threads from Thread Pool 3. Unload AppDomain before the worker threads have finished.4. Try to queue another WorkItem in your default or some other AppDomainResult: The .NET thread pool is dead because there are no threads left for the other AppDomain. ThreadPool Threads are not given back to the thread pool when an AppDomain.Unload is performed. I think it is ok to not kill the threads (reliability) but what is not ok is that there are no threads left for other AppDomains. An AppDomain unload should increase the number of worker/io completion port threads which are currently running inside the to be unloaded AppDomain to ensure that you do not run out of threads after 2-3 days of regular operation when some AppDomains where created and destroyed in the meantime.This will eat up your thread pool quite fast.Sample Code to reproduce:using System;using System.Collections.Generic;using System.Text;using System.Threading;using System.Diagnostics;namespace ThreadPoolAndAppDomain{    [Serializable]    public class Worker    {       public Worker()       {}       int nQueuedItems = 0;              public void QueueWorkItems(int n)       {           for (int i = 0; i < n; i++)           {               ThreadPool.QueueUserWorkItem(delegate(object state)               {                   lock (this) 

Unload an assembly

In my project, I use the code below to load an assembly, and by using that loaded assembly, I create a form and show it to user. I load assemblies with that method, because it don't lock dll file and I can change this dll with new one when needed. When I copy dll and its dependent dll's to working directory, Dll file loaded with that memory stream method, copy without any error. But its referenced dll's could not copy and an error message shown "...Its using by another process". We can say that, when you load an assembly with Assembly.Load(byte[]) method, its references load also, main dll doesn't lock but its refrences lock. Is there any way to load an assembly without dll and its references locked?   
Best Regards,
Ilker Tunca

SQL Server 2005 SP3 Applied and now a MATLAB unmanaged custom assembly is being unloaded



I've inherited a SQL Server 2005 database 9.00.4035.00 SP3 Standard Edition that has a stored procedure call a Matlab assembly.  We applied SP3 to this server. 32 Bit 8 GB RAM (2.33 GHZ x 8CPU)

and now we are getting unloads due to memory pressure.. I assume that SP3 is more rigorous in regards to UNSAFE items.

The unload Message in SQL Server error logs
AppDomain 2 (BEST.dbo[runtime].1) is marked for unload due to memory pressure.

We get this type of scenario.

A. Matlab takes space creating memory pressure.
B. REDGATE SQLBackup6 Log Backups fail (due also to CLR memory issues?)
C. Matlab gets unloaded
D. We cannot recreate the assembly as there is not enough space left.
E. We need to restart the SQL Server service to have enough space to rebuld the assembly. The Buffer pool is full

I'm a bit wary to set a -g startup parameter to the sqlservr.exe since we are in a clustering environment without a real way to test it thoroughly first.   i.e my failover cluster server for SQL server is a DEV/QA sql server instance until the failover occurs. (I did not architect this by the way).

So does anyone have any suggestions in regard to getting MatLab to function again under SP3? It ran fine albeit likely obtrusively and rough under SP2.  No-one was watching for unloads for unexplained s

SQL Server 2005 SP2 - AppDomain was unloaded by escalation policy. Out of memory while accessing a c


I am posting this in the .NET Framework inside SQL Server forum as I assume the issue is related to CLR / SQL Server.  Please let me know if this is the incorrect forum.

I am receiving the following error in the event log:

AppDomain [DB_NAME].dbo[runtime].5253 was unloaded by escalation policy to ensure the consistency of your application. Out of memory happened while accessing a critical resource. 
System.Threading.ThreadAbortException: Exception of type 'System.Threading.ThreadAbortException' was thrown.

The system that this is occurring on is a Windows Server 2003 R2 SP2 (32 bit), SQL Server 2005 SP2 with 8 GB of RAM:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

9.00.3042.00	SP2	Standard Edition

The CLR assembly is relatively simple and is referenced by both store procedures as well as by a table trigger (update).  Essentially the CLR assembly instantiates an object (in a referenced webservice on a separate&

AppDomain.Unload called multiple times?




     In a simple console app, I created a separate AppDomain (name: ad2)  to do some work.  In this AppDomain, I created a separate worker thread  and deliberately put the thread to sleep for long time (2 mins) in the Finally block.


      I also subscribed to the ad2’s Unload event  to do some logging.


      Immediately after calling the worker method, I called the AppDomain.Unload(ad2) in the main thread.  Because of the long Thread.Sleep() in the worker thread finally block, a CannotUnloadAppdomainException was thrown when calling AppDomain.Unload(ad2).

Unable to unload new appdomain completly


Hello friends,

I am using VS2008 with C#. I have an issue related to reflection. In my application I have a dropdown with 2 options. if user selects option1 assembly1 is loaded and invoke a method of loaded assembly. If the user selects option2, assembly2 gets loaded and a method of loaded assembly is invoked. now the issue is both the assemblies have most of the classes common. When the user selects option1 assembly1 loads and invoke a method. this method sets some static object. Now when user selects option2 it loads assembly2 and when that method is invoked it throws an exception due to the static method. I am not suppos to change the code of the assembly namespace. So the solution should be that the assembly should be unloaded after the method has been invoked. But it is impossible to unload an assembly once loaded.

My Findings. By searching on the net what I have learned is I have only one option that create a new appdomain and load the assembly in that appdomain and after the method invoke unload the assembly. i have implemented that but still I am getting the same issue. My guess is that I am not properly unloading the appdomain. i am writing  down the code that I am using. Please have a look and let me know if I am making any mistake while operating with appdomains.

AppDomainSetup setup = AppDomain.CurrentDomain.SetupInformation;


Failed to create AppDomain


Recently updated my system to use Visual Studio 2010, and projects will no longer compile. All of them give the error "Failed to create AppDomain." Intellisense does not work either (except for standard HTML tags), and individual pages will also not compile.

Points of note:

  • All sites are hosted on UNC shares (although it doesn't work on a new site created on local drive either)
  • Language is mostly C#
  • No explicit code is creating AppDomain objects
  • Sites compiled fine under both VS 2005 and 2008 both before and after VS 2010 installation
  • Sites compile and run fine from the IIS server on the remote machines (one IIS 6, one IIS 7)

Things I've tried (some obviously shouldn't have any bearing on it, but I've tried just about everything that anyone suggested on any forum I could find, most of which seemed to apply to IIS, not VS):

  • renaming/deleting security.config
  • running caspol -reset
  • re-registering asp.net: aspnet_regiis.exe -ua / aspnet_regiis.exe -i
  • removing VS 2005, 2008, 2010, and then re-installing just VS 2010
  • adding the UNC path to the local intranet zone (internet options control panel)
  • adding the UNC path to LocalIntranet_Zone in the ASP.Net 2.0 control panel (runtime security policy/machine/al

Error: Encountered multiple versions of the same assembly with GUID...try pre-importing...TlbImp


Hi!  Can someone tell me how I can troubleshoot the following error: "Encountered multiple versions of the same assembly with GUID...try pre-importing one of these assemblies".

The website developed in VS 2010 (.Net 3.5). This error is only received on my workstation.  Another person developing the site does not experience this issue at all.  Also, not sure if this matters, but on my workstation the 'Assembly Information...' dialog contains no values even though the 'AssemblyInfo.vb' file does specify values for the title, desc, etc.  The GUID being referenced in the error is the main project of the three projects within the solution.

I tried looking through the GAC, but do not see any references to the projects or DLLs in the VS solution and am not sure what else/where to look.

If I delete the copy of the solution on my local machine and pull down a copy from source control (AnkhSVN) the solution will build with no error.  Once I make any changes, such as adding a new aspx file, then the error is received.

I can provide any additional information needed.

The type 'System.Data.Linq.DataContext' is defined in an assembly that is not referenced. You must



This is frustrating, and I don't know how to solve it.

I have a strange problem. I am adding a LinqDatasource object, and set the context:

        protected void LinqDataSource_ContextCreating(object sender, LinqDataSourceContextEventArgs e)
            e.ObjectInstance = new KaruselaDataContext(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);

Then I get this error:
The type 'System.Data.Linq.DataContext' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data.Linq, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089'.


On web.config I already have this:
<add assembly="System.Data.Linq, Version=, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

NOTE: The datacontext is in a different project (DLL proect) where I added a refernce to System.Data.Linq.

is there another way adding a refernce to a web project? or only though teh web.config?


MySql.Data assembly problem



I added refernece MySql.Data to my project. My web.config looks like that:

<?xml version="1.0"?>
                <add assembly="MySql.Data, Version=, Culture=neutral, PublicKeyToken=C5687FC88969C44D"/>

But when in ServerExplorer I try "Add Connection..." I can't find "MySql Database" in the "Choose Data Source" dialog box?

What the problem can be?

Registering controls of current assembly object reference NOT set error


Hi There,

I have created a simple ASP.net Web Application (2.0) and have added a web user control.

Now in my page I have added this control but I have registered like this,

<%@ Register Assembly="WebApplication1" Namespace="WebApplication1" TagPrefix="Custom" %>

Which means I want to access all the controls in my current Web Application project

Then I have added my user control like this,

<Custom:MyUserControl ID="MyUserControl1" runat="server" PublicProperty="Hello" />

Every thing is fine but when I execute the project, NO control on my user control gets "instantiated" and thus I receive error "Object Reference Not Set"

Note that My Control has,

1) Public property PublicProperty as String

2) 1 Label control

In Load Event Handler I am setting Text property of Label Control to PublicProperty. Here object reference NOT set error occurs (which means Label control is NOT initialized).

I don't want to register my control using Src, TagPrefix etc. Any ideas?


Could not load file or assembly - Web Deployment Project



I have the following projects in a solution :

- A Web Application

- A Class Library

- A Web Deployment project

The Web Application compiles and run fine when I don't go through the Web Deployment Project. However when I try to use that, I get the following error:

Error 1 An error occurred creating the configuration section handler for hibernate-configuration: Could not load file or assembly 'NHibernate' or one of its dependencies. The system cannot find the file specified. (F:\Folke\Folke.csproj_deploy\Release\web.config line 4) 1 1 Folke.csproj_deploy

"An error occurred creating the configuration section handler for hibernate-configuration: Could not load file or assembly 'NHibernate' or one of its dependencies. The system cannot find the file specified. (F:\Folke\Folke.csproj_deploy\Release\web.config line 4)"

This is the beginning of my Web.config:


CLR Inside Out: Migrating an APTCA Assembly to the .NET Framework 4


The CLR security model in the Microsoft .NET Framework 4 has undergone some substantial changes, including the adoption of "Level2" transparency, similar to the Silverlight security model. Mike Rousos provides an in-depth explanation of how that will likely impact authors of AllowPartiallyTrustedCallers (APTCA) libraries.

Mike Rousos

MSDN Magazine March 2010

Test Run: Determining .NET Assembly and Method References


Before you can test any software system effectively, you must understand the system under test. If the system includes the Microsoft® . NET Framework, understanding the system under test includes understanding its assembly and method dependencies.

James McCaffrey

MSDN Magazine March 2006

ASP.NetWindows Application  .NET Framework  C#  VB.Net  ADO.Net  
Sql Server  SharePoint  Silverlight  Others  All   

Hall of Fame    Twitter   Terms of Service    Privacy Policy    Contact Us    Archives   Tell A Friend