1) Import tut eigentlich nichts zur Laufzeit. Es ist eine Kompilierzeit-Bequemlichkeit, die Sie nur auf Typen verweisen kann, die ihre nicht qualifizierten Namen wie Environment anstelle von System.Environment verwenden.
2) Die Baugruppe wird mit den normalen Baugruppenprüfregeln geladen. Die CLR überprüft verschiedene Standorte vor diese privaten Suchpfade, so dass es wichtig ist, dies zu beachten. Wenn Sie auf eine Assembly mit starkem Namen verweisen und erwarten, diese Assembly in einem privaten Abfragepfad zu finden, wird eine Assembly mit demselben starken Namen (Name, Version, öffentlicher Schlüssel usw.) im GAC bevorzugt. Dies kann manchmal zu unerwartetem Verhalten führen und wird normalerweise durch hartes Codieren einer Assemblyversion in AssemblyInfo.cs und Vergessen, es zu aktualisieren, verursacht.
3) Nach dem Laden kann eine Baugruppe nicht entladen werden, ohne die AppDomain zu entladen. Aber ASP.NET verwendet "Schattenkopieren", was bedeutet, dass Baugruppen vor dem Laden in einen temporären Pfad kopiert werden. Dadurch sollte die ursprüngliche Baugruppe nicht gesperrt und überschrieben werden können. Ich bin mir nicht ganz sicher, warum Sie den Fehler über gesperrte Assemblys bekommen. In einer normalen Windows-Anwendung wäre dies völlig normal und erwartet. Aber ASP.NET ist so konzipiert, dass Sie Inhalt, Code, Assemblys usw. überschreiben können, während die Anwendung läuft, was zu # 4 führt.
4) In der Praxis nein. Da eine Assembly nicht entladen werden kann, gibt es keine Möglichkeit, eine Assembly zu aktualisieren, ohne dass die Webanwendung neu gestartet wird. Technisch gesehen können Sie mehrere Versionen einer Assembly laden, dies würde jedoch nicht die gewünschten Ergebnisse liefern. Alle Kompilierungszeitverweise würden weiterhin auf die alte Assembly verweisen und Sie würden alle Arten von ungültigen Cast-Ausnahmen erhalten, wenn Sie versuchen, die neue Assembly zu verwenden. Aber wie gesagt in # 3, mit ASP.NET Upgrade-Assemblies soll so einfach sein wie das Ersetzen der Dateien und sollte automatisch geschehen. Sie sollten IIS- oder Arbeitsprozesse nicht manuell neu starten müssen.
Die folgenden Links könnten von Interesse sein.
How the Runtime Locates Assemblies
Best Practices for Loading Assemblies
Shadow Copying Assemblies
Unloading Assemblies - Suzanne Cook
UPDATE Nach ein bisschen mehr auf Schatten Kopieren lesen, ich glaube, der Grund, warum Sie könnten das Problem der gesperrten Baugruppen im Extras-Ordner werden sehen, ist dass ASP.NET wahrscheinlich nur den Ordner "bin" für shadow copying angibt.
# 4: Ersetzen Sie es durch eine aktualisierte Version. Ist das möglich während es läuft? – Omar
Wenn Sie Dependency Injection und Programm gegen eine Schnittstelle verwenden, können Sie es leicht tun. – Burt
Könntest du es ausarbeiten ?! – Omar