// Try System.Reflection.Assembly.Load(string)
        bool Try_Assembly_Load_String(string assemblyFullName)
        {
            var systemAssemblyType = appDomain.GetWellKnownType(DmdWellKnownType.System_Reflection_Assembly, isOptional: true);

            Debug.Assert((object)systemAssemblyType != null);
            if ((object)systemAssemblyType == null)
            {
                return(false);
            }

            var loadMethod = systemAssemblyType.GetMethod(nameof(Assembly.Load), DmdSignatureCallingConvention.Default, 0, systemAssemblyType, new[] { appDomain.System_String }, throwOnError: false);

            if ((object)loadMethod == null)
            {
                return(false);
            }

            var runtime = evalInfo.Runtime.GetDotNetRuntime();
            var res     = runtime.Call(evalInfo, null, loadMethod, new object[] { assemblyFullName }, DbgDotNetInvokeOptions.None);

            res.Value?.Dispose();
            return(res.IsNormalResult);
        }
Exemple #2
0
        // Try System.Reflection.Assembly.Load(string)
        bool Try_Assembly_Load_String(string assemblyFullName)
        {
            var systemAssemblyType = appDomain.GetWellKnownType(DmdWellKnownType.System_Reflection_Assembly, isOptional: true);

            Debug.Assert((object)systemAssemblyType != null);
            if ((object)systemAssemblyType == null)
            {
                return(false);
            }

            var loadMethod = systemAssemblyType.GetMethod("Load", DmdSignatureCallingConvention.Default, 0, systemAssemblyType, new[] { appDomain.System_String }, throwOnError: false);

            if ((object)loadMethod == null)
            {
                return(false);
            }

            var runtime = context.Runtime.GetDotNetRuntime();
            var res     = runtime.Call(context, frame, null, loadMethod, new object[] { assemblyFullName }, cancellationToken);

            res.Value?.Dispose();
            return(res.IsNormalResult);
        }