public void LoadAssemblyNotInCurrentDomain() { // Ensure that the assembly is not already loaded foreach (System.Reflection.Assembly assm in AppDomain.CurrentDomain.GetAssemblies()) { //Dynamic libraries generated dynamically in the process cannot access location - it would throw NotSupportedException //for example runtime assemblies Microsoft.GeneratedCode of xml serializers if (assm.IsDynamic == false) { Assert.IsFalse(assm.Location.Equals(AssemblyPath, StringComparison.CurrentCultureIgnoreCase)); } } // We don't even want it in the reflection-only context foreach (System.Reflection.Assembly assm in AppDomain.CurrentDomain.ReflectionOnlyGetAssemblies()) { Assert.IsFalse(assm.Location.Equals(AssemblyPath, StringComparison.CurrentCultureIgnoreCase)); } string id = "MockComponent"; string classname = "MockComponents.MockComponent"; //class exists and should be loaded ComponentMetadataDefinition compMetaDef = new ComponentMetadataDefinition(id, AssemblyPath, classname); ComponentMetadata compMetadata = new ComponentMetadata(compMetaDef, AppContext.BaseTestDirectory); Library.Add(compMetaDef); AppDomain testComponentsAppDomain = (new TraceLab.Core.Components.LibraryHelper(AppContext.WorkspaceInstance.TypeDirectories)).CreateDomain(id, true); try { Library.LoadComponent(compMetadata, CreateWorkspaceWrapper(compMetadata), null, testComponentsAppDomain); // Ensure that the assembly did not get loaded into the current application domain. foreach (System.Reflection.Assembly assm in AppDomain.CurrentDomain.GetAssemblies()) { //Dynamic libraries generated dynamically in the process cannot access location - it would throw NotSupportedException //for example runtime assemblies Microsoft.GeneratedCode of xml serializers if (assm.IsDynamic == false) { Assert.IsFalse(assm.Location.Equals(AssemblyPath, StringComparison.CurrentCultureIgnoreCase)); } } // We don't even want it in the reflection-only context foreach (System.Reflection.Assembly assm in AppDomain.CurrentDomain.ReflectionOnlyGetAssemblies()) { Assert.IsFalse(assm.Location.Equals(AssemblyPath, StringComparison.CurrentCultureIgnoreCase)); } } finally { LibraryHelper.DestroyDomain(testComponentsAppDomain); } }
public void LoadComponentClassLoaded() { string id = "MockComponent"; string classname = "MockComponents.MockComponent"; //class exists and should be loaded ComponentMetadataDefinition compMetaDef = new ComponentMetadataDefinition(id, AssemblyPath, classname); ComponentMetadata compMetadata = new ComponentMetadata(compMetaDef, AppContext.BaseTestDirectory); Library.Add(compMetaDef); AppDomain testComponentsAppDomain = (new TraceLab.Core.Components.LibraryHelper(AppContext.WorkspaceInstance.TypeDirectories)).CreateDomain(id, true); try { Library.LoadComponent(compMetadata, CreateWorkspaceWrapper(compMetadata), null, testComponentsAppDomain); } finally { LibraryHelper.DestroyDomain(testComponentsAppDomain); } }