예제 #1
0
        private static void WeaveAssemblyCore(string assemblyPath, IEnumerable <string> references)
        {
            var logger = new UnityLogger();
            var name   = Path.GetFileNameWithoutExtension(assemblyPath);

            try
            {
                var timer = new Stopwatch();
                timer.Start();

                var resolutionResult = WeaverAssemblyResolver.Resolve(assemblyPath, references);
                if (resolutionResult == null)
                {
                    return;
                }

                using (resolutionResult)
                {
                    // Unity doesn't add the [TargetFramework] attribute when compiling the assembly. However, it's
                    // using NETStandard2, so we just hardcode this.
                    var weaver  = new Weaver(resolutionResult.Module, logger, new FrameworkName(".NETStandard,Version=v2.0"));
                    var results = weaver.Execute();

                    // Unity creates an entry in the build console for each item, so let's not pollute it.
                    if (results.SkipReason == null)
                    {
                        resolutionResult.SaveModuleUpdates();
                        logger.Info($"[{name}] Weaving completed in {timer.ElapsedMilliseconds} ms.{Environment.NewLine}{results}");
                    }
                }
            }
            catch (Exception ex)
            {
                logger.Warning($"[{name}] Weaving failed: {ex.StackTrace}");
            }
        }
예제 #2
0
        public void TestLog__Warning()
        {
            logger.Warning("I'm warning you");

            innerLogger.Received().Log(LogType.Warning, "I'm warning you");
        }