예제 #1
0
        private static string resolveAssemblyDllFromBaseDirectory(string name, string baseDirectory)
        {
            progress("dllFromBase: Resolve  [" + name + "] from " + baseDirectory);
            // Resolve name to the dll as if .exe in baseDirectory was executed
            AppDomainSetup setup = new AppDomainSetup();

            setup.ApplicationBase = baseDirectory;
            setup.DisallowApplicationBaseProbing = false;

            AppDomain dtest = AppDomain.CreateDomain("temp" + Guid.NewGuid(), null, setup);

            progress("dllFromBase: Domain created");
            try
            {
                System.Runtime.Remoting.ObjectHandle v = Activator.CreateInstanceFrom(dtest, Assembly.GetExecutingAssembly().Location, typeof(AppDomainWorker).FullName);
                if (v != null)
                {
                    AppDomainWorker appDomainWorker = v.Unwrap() as AppDomainWorker;
                    progress("dllFromBase: Resolver created");
                    if (appDomainWorker != null)
                    {
                        string s = appDomainWorker.ResolveDllFromAssemblyName(name);
                        progress("dllFromBase: " + name + " >> " + s);
                        return(s);
                    }
                }
                progress("dllFromBase: Resolve  " + name + " failed");
                return(null);
            }
            finally
            {
                AppDomain.Unload(dtest);
            }
        }
        private static IList <Type> ReturnCmdletTypesAndAssemblyName(string[] cmdlets)
        {
            var    assemblyPath = typeof(TestDummyCommand).Assembly.Location;
            string assembyName;
            var    types = AppDomainWorker.GetCmdletTypes(assemblyPath, cmdlets, out assembyName);

            Assert.Equal($"{ExpectedAssemblyName}", assembyName);
            Assert.True(types.Count >= 1);
            Assert.Contains(types, t => t.FullName == $"{ExpectedAssemblyName}.TestDummyCommand");
            if (cmdlets != null && cmdlets?.Length == 1)
            {
                Assert.DoesNotContain(types, t => t.FullName == $"{ExpectedAssemblyName}.TestDummyTwoCommand");
            }

            return(types);
        }
        public void BuildConfiguration()
        {
            var cmdlets = new[] { "Test-Dummy" };
            var types   = ReturnCmdletTypesAndAssemblyName(cmdlets);
            var conf    = new AppDomainWorker().BuildXmlConfiguration(types);

            Assert.Equal(4, conf.ViewDefinitions.Views.Length);

            var view0 = conf.ViewDefinitions.Views[0];

            Assert.Equal($"{ExpectedAssemblyName}.Models.PsDummyOutput1", view0?.ViewSelectedBy?.TypeName);

            var expecterProps1 = new[] { "RequestId", "StatusCode", "Id", "Name", "Type" };
            var columnItems    = view0?.TableControl?.TableRowEntries[0]?.TableColumnItems;

            Assert.NotNull(columnItems);
            Assert.Equal(expecterProps1.Length, columnItems.Length);
            foreach (var expectedProp in expecterProps1)
            {
                Assert.Contains(columnItems, ci => ci.PropertyName == expectedProp);
            }
        }