예제 #1
0
            public override void GeneratePlatformResourceFileList(IVcxprojGenerationContext context, IFileGenerator fileGenerator, Strings alreadyWrittenPriFiles, IList <Vcxproj.ProjectFile> resourceFiles, IList <Vcxproj.ProjectFile> imageResourceFiles)
            {
                // adding the durango resw file, if they were not in PRIFiles
                var resourceResw = new List <Vcxproj.ProjectFile>();

                foreach (string file in context.Project.XResourcesResw)
                {
                    var projectFile = new Vcxproj.ProjectFile(context, file);
                    if (!alreadyWrittenPriFiles.Contains(projectFile.FileNameProjectRelative))
                    {
                        resourceResw.Add(projectFile);
                    }
                }

                if (resourceResw.Count > 0)
                {
                    fileGenerator.Write(_projectFilesBegin);
                    foreach (var projectFile in resourceResw)
                    {
                        using (fileGenerator.Declare("file", projectFile))
                        {
                            fileGenerator.Write(_projectPriResource);
                        }
                        resourceFiles.Add(projectFile);
                    }
                    fileGenerator.Write(_projectFilesEnd);
                }

                // adding the durango img file
                if (context.Project.XResourcesImg.Count > 0)
                {
                    fileGenerator.Write(_projectFilesBegin);
                    foreach (string file in context.Project.XResourcesImg)
                    {
                        var projectFile = new Vcxproj.ProjectFile(context, file);
                        using (fileGenerator.Declare("file", projectFile))
                        {
                            fileGenerator.Write(_projectImgResource);
                        }
                        imageResourceFiles.Add(projectFile);
                    }
                    fileGenerator.Write(_projectFilesEnd);
                }

                // WARNING: THIS IS A PATCH TO ADD THE XMANIFEST FILE IN THE FILE LIST
                //          This is not a clean way to do but it is the only way we found so far
                if (context.ProjectConfigurations.First().NeedsAppxManifestFile)
                {
                    fileGenerator.Write(_projectFilesBegin);
                    {
                        string file        = Sharpmake.Util.GetAppxManifestFileName(context.ProjectConfigurations.First());
                        var    projectFile = new Vcxproj.ProjectFile(context, file);
                        using (fileGenerator.Declare("file", projectFile))
                        {
                            fileGenerator.Write(_projectFilesXManifest);
                        }
                    }
                    fileGenerator.Write(_projectFilesEnd);
                }
            }
예제 #2
0
        public bool IsValid(string file)
        {
            string extension = Path.GetExtension(file);

            if (FilterFiles.Count != 0 ||
                FilterFilesExtensions.Count != 0)
            {
                if (!FilterFiles.Contains(file) &&
                    !FilterFilesExtensions.Contains(extension))
                {
                    return(false);
                }
            }

            if (ExcludeFiles.Contains(file))
            {
                return(false);
            }

            if (ExcludeFilesExtensions.Contains(extension))
            {
                return(false);
            }

            return(true);
        }
예제 #3
0
 public static bool ShouldBreakOnSourcePath(Context context, Strings sourcePaths)
 {
     if (!IsEnabled)
     {
         return(false);
     }
     if (!BreakOnContext.HasFlag(context))
     {
         return(false);
     }
     if (SourcePath != null)
     {
         if (sourcePaths.Contains(SourcePath))
         {
             return(true);
         }
         foreach (string sourcePath in sourcePaths.Values)
         {
             if (ShouldBreakOnSourcePath(context, sourcePath))
             {
                 return(true);
             }
         }
     }
     return(false);
 }
예제 #4
0
 public void AddSourceFile(string file)
 {
     if (!_visiting.Contains(file))
     {
         _assemblyInfo._sourceFiles.Add(file);
         _visiting.Add(file);
     }
 }
예제 #5
0
            public override void GeneratePlatformResourceFileList(IVcxprojGenerationContext context, IFileGenerator fileGenerator, Strings alreadyWrittenPriFiles, IList <Vcxproj.ProjectFile> resourceFiles, IList <Vcxproj.ProjectFile> imageResourceFiles)
            {
                // adding the durango resw file, if they were not in PRIFiles
                var resourceResw = new List <Vcxproj.ProjectFile>();

                foreach (string file in context.Project.XResourcesResw)
                {
                    var projectFile = new Vcxproj.ProjectFile(context, file);
                    if (!alreadyWrittenPriFiles.Contains(projectFile.FileNameProjectRelative))
                    {
                        resourceResw.Add(projectFile);
                    }
                }

                if (resourceResw.Count > 0)
                {
                    fileGenerator.Write(_projectFilesBegin);
                    foreach (var projectFile in resourceResw)
                    {
                        using (fileGenerator.Declare("file", projectFile))
                        {
                            fileGenerator.Write(_projectPriResource);
                        }
                        resourceFiles.Add(projectFile);
                    }
                    fileGenerator.Write(_projectFilesEnd);
                }

                // adding the durango img file
                if (context.Project.XResourcesImg.Count > 0)
                {
                    fileGenerator.Write(_projectFilesBegin);
                    foreach (string file in context.Project.XResourcesImg)
                    {
                        var projectFile = new Vcxproj.ProjectFile(context, file);
                        using (fileGenerator.Declare("file", projectFile))
                        {
                            fileGenerator.Write(_projectImgResource);
                        }
                        imageResourceFiles.Add(projectFile);
                    }
                    fileGenerator.Write(_projectFilesEnd);
                }

                // WARNING: THIS IS A PATCH TO ADD THE XMANIFEST FILE IN THE FILE LIST
                //          This is not a clean way to do but it is the only way we found so far
                var manifestFiles = context.ProjectConfigurations
                                    .Where(x => x.Platform == Platform.durango && x.NeedsAppxManifestFile)
                                    .Select(Sharpmake.Util.GetAppxManifestFileName)
                                    .Distinct()
                                    .ToList();

                if (manifestFiles.Count > 1)
                {
                    throw new Error("conf.AppxManifestFilePath must be identical for all Durango configurations.");
                }
                else if (manifestFiles.Count == 1)
                {
                    fileGenerator.Write(_projectFilesBegin);
                    {
                        var projectFile = new Vcxproj.ProjectFile(context, manifestFiles[0]);
                        using (fileGenerator.Declare("file", projectFile))
                        {
                            fileGenerator.Write(_projectFilesXManifest);
                        }
                    }
                    fileGenerator.Write(_projectFilesEnd);
                }
            }