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); }
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); }