コード例 #1
0
        /// <summary>
        /// Gets the command line args to create a code analysis project
        /// </summary>
        /// <param name="proj">The build project</param>
        /// <returns>An enumerable list of arguments</returns>
        private IEnumerable <string> CommandLineArgsFromBuildProject(MsBuild.Project proj)
        {
            StringBuilder builder = new StringBuilder();
            string        projDir = proj.DirectoryPath;

            // references (non-project since project are handled later)
            IEnumerable <ResolvedReference> resolvedRefs = _refResolver.ResolveReferences(proj);

            foreach (ResolvedReference oneRef in resolvedRefs)
            {
                builder.Append(oneRef.CommandLineArg);
            }

            // Compile files
            IEnumerable <MsBuild.ProjectItem> compile = proj.Items.Where(itm => itm.ItemType == "Compile");

            foreach (MsBuild.ProjectItem item in compile)
            {
                builder.Append($"{item.EvaluatedInclude} ");
            }

            // /out provides a name
            builder.Append($"/out:{new FileInfo(proj.FullPath).Name} ");

            // target: TODO: What does this do?
            builder.Append("/target:library ");

            return(CodeAnalysis.CommandLineParser.SplitCommandLineIntoArguments(builder.ToString(), true));
        }