private IReadOnlyDictionary ResolveHeavyMacros()

in Backend/ReSharperPlugin/ForTea.ReSharperPlugin/Psi/Resolve/Macros/T4MacroResolutionCache.cs [74:103]


    private IReadOnlyDictionary<string, string> ResolveHeavyMacros(
      [NotNull] IEnumerable<string> macros,
      [NotNull] IProjectFile file)
    {
      var result = new Dictionary<string, string>();
      Lazy<IVsBuildMacroInfo> vsBuildMacroInfo = Lazy.Of(() => TryGetVsBuildMacroInfo(file), false);
      foreach (string macro in macros)
      {
        bool succeeded = false;
        string value = null;
        if (vsBuildMacroInfo.Value != null)
        {
          succeeded = HResultHelpers.SUCCEEDED(vsBuildMacroInfo.Value.GetBuildMacroValue(macro, out value)) &&
                      !string.IsNullOrEmpty(value);
        }

        if (!succeeded)
        {
          value = MSBuildExtensions.GetStringValue(T4ResolutionUtils.TryGetVsHierarchy(file), macro, null);
          succeeded = !string.IsNullOrEmpty(value);
        }

        if (succeeded)
        {
          result[macro] = value;
        }
      }

      return result;
    }