Index: Externals/NDoc3/src/MsdnDocumenter.cs ================================================================== --- Externals/NDoc3/src/MsdnDocumenter.cs +++ Externals/NDoc3/src/MsdnDocumenter.cs @@ -1425,10 +1425,11 @@ File.Open(fullPath, FileMode.Create), ctx.CurrentFileEncoding)) { string DocLangCode = Enum.GetName(typeof(SdkLanguage), MyConfig.SdkDocLanguage).Replace("_", "-"); MsdnXsltUtilities utilities = new MsdnXsltUtilities(ctx._nameResolver, ctx.CurrentAssemblyName, MyConfig.SdkDocVersionString, DocLangCode, MyConfig.SdkLinksOnWeb, ctx.CurrentFileEncoding); + ctx._nameResolver.utilities = utilities; if (arguments.GetParam("assembly-name", string.Empty) == null) { arguments.AddParam("assembly-name", String.Empty, ctx.CurrentAssemblyName); } arguments.AddParam("ndoc-title", String.Empty, MyConfig.Title); Index: Externals/NDoc3/src/NameResolver.cs ================================================================== --- Externals/NDoc3/src/NameResolver.cs +++ Externals/NDoc3/src/NameResolver.cs @@ -9,10 +9,11 @@ /// /// public class NameResolver { public const string EXT = ".html"; + public MsdnXsltUtilities utilities; private readonly bool mergeAssemblies; private readonly StringDictionary fileNames = new StringDictionary(); private readonly StringDictionary elemNames = new StringDictionary(); private readonly ReferenceTypeDictionary assemblyReferences = new ReferenceTypeDictionary(); @@ -455,11 +456,25 @@ filename = fileNames[memberId]; } // Debug.Assert(filename != null, string.Format("Filename for assembly:memberId [{0}:{1}] not found", currentAssemblyName, memberId)); // Debug.WriteLine(string.Format("GetFilenameForIdInternal('{0}','{1}') => {2}", currentAssemblyName, memberId, filename)); - return filename ?? string.Empty; + if (filename != null) + return filename; + + if (utilities != null) + { + if (memberId.Length > 2 && memberId[1] == ':') + memberId = memberId.Substring(2); + + filename = utilities.FormatOnlineSDKLink(memberId); + + if (filename != null) + return filename; + } + + return String.Empty; } private string GetFilenameForIdSpecial(string assemblyName, string memberId, string postfix) { string fn = GetFilenameForIdInternal(assemblyName, memberId); if (fn != null && fn.Length > EXT.Length) {