Example #1
0
        public static void WeaveAssembliesInFolder(string folder, string playerPackage)
        {
            ICompilationExtension compilationExtension = Weaver.GetCompilationExtension();
            string unityEngine = Path.Combine(folder, "UnityEngine.dll");

            foreach (string current in from f in Directory.GetFiles(folder)
                     where Weaver.ShouldWeave(Path.GetFileName(f))
                     select f)
            {
                string[]          extraAssemblyPaths;
                IAssemblyResolver assemblyResolver;
                Weaver.QueryAssemblyPathsAndResolver(compilationExtension, current, false, out extraAssemblyPaths, out assemblyResolver);
                Weaver.WeaveInto(current, current, unityEngine, playerPackage, extraAssemblyPaths, assemblyResolver);
            }
        }
Example #2
0
        public static bool WeaveUnetFromEditor(ScriptAssembly assembly, string assemblyDirectory, string outputDirectory, string unityEngine, string unityUNet, bool buildingForEditor)
        {
            if ((assembly.Flags & AssemblyFlags.EditorOnly) == AssemblyFlags.EditorOnly)
            {
                return(true);
            }

            var assemblyPath = Path.Combine(assemblyDirectory, assembly.Filename);

            ICompilationExtension compilationExtension = GetCompilationExtension();
            IAssemblyResolver     assemblyResolver;

            string[] assemblyPaths;
            QueryAssemblyPathsAndResolver(compilationExtension, assemblyPath, buildingForEditor, out assemblyPaths, out assemblyResolver);
            return(WeaveInto(assembly, assemblyPath, outputDirectory, unityEngine, unityUNet, assemblyPaths, assemblyResolver));
        }
        private void FillCompilerOptions(List <string> arguments, out string argsPrefix)
        {
            argsPrefix = "/noconfig ";
            arguments.Add("/nostdlib+");
            arguments.Add("/preferreduilang:en-US");
            IPlatformSupportModule platformSupportModule = ModuleManager.FindPlatformSupportModule(ModuleManager.GetTargetStringFromBuildTarget(this.BuildTarget));
            ICompilationExtension  compilationExtension  = platformSupportModule.CreateCompilationExtension();

            arguments.AddRange(from r in this.GetClassLibraries()
                               select "/reference:\"" + r + "\"");
            arguments.AddRange(from r in compilationExtension.GetAdditionalAssemblyReferences()
                               select "/reference:\"" + r + "\"");
            arguments.AddRange(from r in compilationExtension.GetWindowsMetadataReferences()
                               select "/reference:\"" + r + "\"");
            arguments.AddRange(from d in compilationExtension.GetAdditionalDefines()
                               select "/define:" + d);
            arguments.AddRange(compilationExtension.GetAdditionalSourceFiles());
        }
Example #4
0
        public static bool WeaveUnetFromEditor(ScriptAssembly assembly, string assemblyDirectory, string outputDirectory, string unityEngine, string unityUNet, bool buildingForEditor)
        {
            bool result;

            if ((assembly.Flags & AssemblyFlags.EditorOnly) == AssemblyFlags.EditorOnly)
            {
                result = true;
            }
            else
            {
                string text = Path.Combine(assemblyDirectory, assembly.Filename);
                ICompilationExtension compilationExtension = Weaver.GetCompilationExtension();
                string[]          extraAssemblyPaths;
                IAssemblyResolver assemblyResolver;
                Weaver.QueryAssemblyPathsAndResolver(compilationExtension, text, buildingForEditor, out extraAssemblyPaths, out assemblyResolver);
                result = Weaver.WeaveInto(assembly, text, outputDirectory, unityEngine, unityUNet, extraAssemblyPaths, assemblyResolver);
            }
            return(result);
        }
 public static AssemblyTypeInfoGenerator.ClassInfo[] ExtractAssemblyTypeInfo(BuildTarget targetPlatform, bool isEditor, string assemblyPathName, string[] searchDirs)
 {
     try
     {
         ICompilationExtension compilationExtension = ModuleManager.GetCompilationExtension(ModuleManager.GetTargetStringFromBuildTarget(targetPlatform));
         string[] extraAssemblyPaths = compilationExtension.GetCompilerExtraAssemblyPaths(isEditor, assemblyPathName);
         if (extraAssemblyPaths != null && extraAssemblyPaths.Length > 0)
         {
             List <string> stringList = new List <string>((IEnumerable <string>)searchDirs);
             stringList.AddRange((IEnumerable <string>)extraAssemblyPaths);
             searchDirs = stringList.ToArray();
         }
         IAssemblyResolver assemblyResolver = compilationExtension.GetAssemblyResolver(isEditor, assemblyPathName, searchDirs);
         return((assemblyResolver != null ? new AssemblyTypeInfoGenerator(assemblyPathName, assemblyResolver) : new AssemblyTypeInfoGenerator(assemblyPathName, searchDirs)).GatherClassInfo());
     }
     catch (Exception ex)
     {
         throw new Exception("ExtractAssemblyTypeInfo: Failed to process " + assemblyPathName + ", " + (object)ex);
     }
 }
Example #6
0
 public static AssemblyTypeInfoGenerator.ClassInfo[] ExtractAssemblyTypeInfo(BuildTarget targetPlatform, bool isEditor, string assemblyPathName, string[] searchDirs)
 {
     AssemblyTypeInfoGenerator.ClassInfo[] result;
     try
     {
         string targetStringFromBuildTarget         = ModuleManager.GetTargetStringFromBuildTarget(targetPlatform);
         ICompilationExtension compilationExtension = ModuleManager.GetCompilationExtension(targetStringFromBuildTarget);
         string[] compilerExtraAssemblyPaths        = compilationExtension.GetCompilerExtraAssemblyPaths(isEditor, assemblyPathName);
         if (compilerExtraAssemblyPaths != null && compilerExtraAssemblyPaths.Length > 0)
         {
             List <string> list = new List <string>(searchDirs);
             list.AddRange(compilerExtraAssemblyPaths);
             searchDirs = list.ToArray();
         }
         IAssemblyResolver         assemblyResolver = compilationExtension.GetAssemblyResolver(isEditor, assemblyPathName, searchDirs);
         AssemblyTypeInfoGenerator assemblyTypeInfoGenerator;
         if (assemblyResolver == null)
         {
             assemblyTypeInfoGenerator = new AssemblyTypeInfoGenerator(assemblyPathName, searchDirs);
         }
         else
         {
             assemblyTypeInfoGenerator = new AssemblyTypeInfoGenerator(assemblyPathName, assemblyResolver);
         }
         result = assemblyTypeInfoGenerator.GatherClassInfo();
     }
     catch (Exception ex)
     {
         throw new Exception(string.Concat(new object[]
         {
             "ExtractAssemblyTypeInfo: Failed to process ",
             assemblyPathName,
             ", ",
             ex
         }));
     }
     return(result);
 }
 public virtual ICompilationExtension CreateCompilationExtension()
 {
     return ((this.compilationExtension == null) ? (this.compilationExtension = new DefaultCompilationExtension()) : this.compilationExtension);
 }
Example #8
0
 private static void QueryAssemblyPathsAndResolver(ICompilationExtension compilationExtension, string file, bool editor, out string[] assemblyPaths, out IAssemblyResolver assemblyResolver)
 {
     assemblyResolver = compilationExtension.GetAssemblyResolver(editor, file, null);
     assemblyPaths    = compilationExtension.GetCompilerExtraAssemblyPaths(editor, file).ToArray <string>();
 }
 public virtual ICompilationExtension CreateCompilationExtension()
 {
   if (this.compilationExtension != null)
     return this.compilationExtension;
   return this.compilationExtension = (ICompilationExtension) new DefaultCompilationExtension();
 }
Example #10
0
 private static void QueryAssemblyPathsAndResolver(ICompilationExtension compilationExtension, string file, bool editor, out string[] assemblyPaths, out IAssemblyResolver assemblyResolver)
 {
   assemblyResolver = compilationExtension.GetAssemblyResolver(editor, file, (string[]) null);
   assemblyPaths = ((IEnumerable<string>) compilationExtension.GetCompilerExtraAssemblyPaths(editor, file)).ToArray<string>();
 }
 public virtual ICompilationExtension CreateCompilationExtension() =>
 ((this.compilationExtension == null) ? (this.compilationExtension = new DefaultCompilationExtension()) : this.compilationExtension);
 public virtual ICompilationExtension CreateCompilationExtension()
 {
     return(compilationExtension != null ? compilationExtension : compilationExtension = new DefaultCompilationExtension());
 }