示例#1
0
        public void GetDCompileOptions(IVsHierarchy proj, uint itemid,
                                       out string impPath, out string stringImpPath,
                                       out string versionids, out string debugids, out uint flags)
        {
            Microsoft.VisualStudio.VCProjectEngine.VCFileConfiguration fcfg;
            Microsoft.VisualStudio.VCProjectEngine.VCConfiguration     cfg;
            System.Reflection.IReflect vcrefl;
            Microsoft.VisualStudio.VCProjectEngine.IVCRulePropertyStorage vcprop;
            GetVCToolProps(proj, itemid, out fcfg, out cfg, out vcrefl, out vcprop);

            EvalFun eval = (string s) => { return(fcfg != null?fcfg.Evaluate(s) : cfg.Evaluate(s)); };

            string platform = eval("$(PlatformName)");
            string compiler = eval("$(DCompiler)");
            bool   ldc      = compiler == "LDC";

            impPath       = vcprop.GetEvaluatedPropertyValue("ImportPaths");
            stringImpPath = vcprop.GetEvaluatedPropertyValue("StringImportPaths");
            versionids    = vcprop.GetEvaluatedPropertyValue("VersionIdentifiers");
            debugids      = vcprop.GetEvaluatedPropertyValue("DebugIdentifiers");

            bool unittestOn   = vcprop.GetEvaluatedPropertyValue("Unittest") == "true";
            bool debugOn      = vcprop.GetEvaluatedPropertyValue("DebugCode") == "Debug";
            bool x64          = platform == "x64";
            bool cov          = vcprop.GetEvaluatedPropertyValue("Coverage") == "true";
            bool doc          = vcprop.GetEvaluatedPropertyValue("DocDir") != "" || vcprop.GetEvaluatedPropertyValue("DocFile") != "";
            bool nobounds     = vcprop.GetEvaluatedPropertyValue("BoundsCheck") == "On";
            bool noDeprecated = vcprop.GetEvaluatedPropertyValue("Deprecations") == "Error";
            bool gdc          = false;
            int  versionLevel = 0;
            int  debugLevel   = 0;

            flags = (uint)ConfigureFlags(unittestOn, debugOn, x64, cov, doc, nobounds, gdc,
                                         versionLevel, debugLevel, noDeprecated, ldc);
        }
示例#2
0
        public void GetDCommandLine(IVsHierarchy proj, uint itemid, out string cmdline)
        {
            Microsoft.VisualStudio.VCProjectEngine.VCFileConfiguration fcfg;
            Microsoft.VisualStudio.VCProjectEngine.VCConfiguration     cfg;
            System.Reflection.IReflect vcrefl;
            Microsoft.VisualStudio.VCProjectEngine.IVCRulePropertyStorage vcprop;
            GetVCToolProps(proj, itemid, out fcfg, out cfg, out vcrefl, out vcprop);

            EvalFun eval = (string s) => { return(fcfg != null?fcfg.Evaluate(s) : cfg.Evaluate(s)); };

            string compiler = eval("$(DCompiler)");
            bool   ldc      = compiler == "LDC";

            string assemblyFolder = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
            string xmlFileName    = System.IO.Path.Combine(assemblyFolder, compiler + ".xml");

            var cd = new dbuild.CompileD();

            cd.Xaml                = xmlFileName;
            cd.Compiler            = compiler;
            cd.ToolExe             = fcfg.Evaluate(ldc ? "$(LDCBinDir)ldmd2.exe" : "$(DMDBinDir)dmd.exe");
            cd.CommandLineTemplate = vcprop.GetEvaluatedPropertyValue("CommandLineTemplate");
            cd.AdditionalOptions   = vcprop.GetEvaluatedPropertyValue("AdditionalOptions");
            cd.Sources             = new Microsoft.Build.Framework.ITaskItem[1] {
                new Microsoft.Build.Utilities.TaskItem("dummy.d")
            };
            cd.Parameters = GetParametersFromFakeProperties(vcprop, vcrefl.GetProperties(0));
            cmdline       = cd.ToolExe + " " + cd.GenCmdLine(xmlFileName);
        }