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