Menu

#666 Ndoc task doesn't use referencepaths node in build

0.85
open
nobody
Tasks (408)
5
2008-02-15
2008-02-15
No

Nant launches an exception when it's trying to generate ndoc documentation in assemblies that have external assemblies referenced:
{{{
[ndoc] Writing project settings to 'C:\Documents and Settings\*****\Configuración local\Temp\tmp36.tmp'.
[ndoc] NDoc project file: file://C:\Documents and Settings\*****\Configuración local\Temp\tmp36.tmp
[ndoc] Initializing...
[ndoc] Merging XML documentation...
[ndoc] C:\workspace\SRX\SRXClientNET\SRXClientNet\SRXClientNet.build(621,10):
[ndoc] Error building documentation.:
[ndoc] NAnt.Core.BuildException: C:\workspace\SRX\SRXClientNET\SRXClientNet\SRXClientNet.build(621,10):
[ndoc] Error building documentation. ---> NDoc.Core.DocumenterException: No se puede cargar el archivo o ensamblado
'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=904f2731fad1dd8f' ni una de sus dependencias. La definición
del manifiesto del ensamblado no coincide con la referencia al ensamblado. (Excepción de HRESULT: 0x80131040) ---> Syst
em.IO.FileLoadException: No se puede cargar el archivo o ensamblado 'log4net, Version=1.2.10.0, Culture=neutral, PublicK
eyToken=904f2731fad1dd8f' ni una de sus dependencias. La definición del manifiesto del ensamblado no coincide con la ref
erencia al ensamblado. (Excepción de HRESULT: 0x80131040)
[ndoc] Nombre de archivo: 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=904f2731fad1dd8f'
[ndoc]
[ndoc] Server stack trace:
[ndoc] en System.ModuleHandle.ResolveType(Int32 typeToken, RuntimeTypeHandle* typeInstArgs, Int32 typeInstCount,
RuntimeTypeHandle* methodInstArgs, Int32 methodInstCount)
[ndoc] en System.ModuleHandle.ResolveTypeHandle(Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, R
untimeTypeHandle[] methodInstantiationContext)
[ndoc] en System.Reflection.Module.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericM
ethodArguments)
[ndoc] en System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, Metadata
Import scope, Assembly& lastAptcaOkAssembly, Module decoratedModule, MetadataToken decoratedToken, RuntimeType attribute
FilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, Runtime
MethodHandle& ctor, Boolean& ctorHasParameters, Boolean& isVarArg)
[ndoc] en System.Reflection.CustomAttribute.GetCustomAttributes(Module decoratedModule, Int32 decoratedMetadataT
oken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes)
[ndoc] en System.Reflection.CustomAttribute.GetCustomAttributes(Assembly assembly, RuntimeType caType)
[ndoc] en System.Reflection.Assembly.GetCustomAttributes(Boolean inherit)
[ndoc] en NDoc.Core.Reflection.ReflectionEngine.WriteAssembly(XmlWriter writer, Assembly assembly)
[ndoc] en NDoc.Core.Reflection.ReflectionEngine.BuildXml(XmlWriter writer)
[ndoc] en NDoc.Core.Reflection.ReflectionEngine.MakeXmlFile(ReflectionEngineParameters rep, String xmlFile)
[ndoc] en System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Ob
ject server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[ndoc] en System.Runtime.Remoting.Messaging.StackBuilderSink.PrivateProcessMessage(RuntimeMethodHandle md, Objec
t[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
[ndoc] en System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, B
oolean fExecuteInContext)
[ndoc]
[ndoc] Exception rethrown at [0]:
[ndoc] en System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
[ndoc] en System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
[ndoc] en NDoc.Core.Reflection.ReflectionEngine.MakeXmlFile(ReflectionEngineParameters rep, String xmlFile)
[ndoc] en NDoc.Core.Reflection.BaseReflectionDocumenter.MakeXmlFile(Project project, String fileName)
[ndoc] en NDoc.Documenter.Msdn.MsdnDocumenter.Build(Project project)
[ndoc]
[ndoc] AVS: El registro del enlace de ensamblado está desactivado.
[ndoc] Para habilitar el registro de errores del enlace de ensamblado, establezca el valor de Registro [HKLM\Softwa
re\Microsoft\Fusion!EnableLog] (DWORD) como 1.
[ndoc] Nota: existe una disminución del rendimiento asociada registro de errores del enlace de ensamblado.
[ndoc] Para desactivar esta característica, elimine el valor de Registro [HKLM\Software\Microsoft\Fusion!EnableLog]
.
[ndoc]
[ndoc] --- Fin del seguimiento de la pila de la excepción interna ---
[ndoc] en NDoc.Documenter.Msdn.MsdnDocumenter.Build(Project project)
[ndoc] en NAnt.DotNet.Tasks.NDocTask.ExecuteTask()
[ndoc] --- Fin del seguimiento de la pila de la excepción interna ---
[ndoc] en NAnt.DotNet.Tasks.NDocTask.ExecuteTask()
[ndoc] en NAnt.Core.Task.Execute()
}}}

This is the ndoc section that launches the error (documenters node has been removed for readibility):
{{{
#!xml
<ndoc failonerror="false" verbose="true">
<assemblies basedir="${current.bin.dir}">
<include name="SRXClientNet.dll" />
</assemblies>
<referencepaths>
<include name="${build.libs}" />
</referencepaths>
</ndoc>
}}}
Taking a look at temporal NDoc project file I have not found any reference about referencepath node (documenters node has been removed for readibility):
{{{
#!xml
<?xml version="1.0" encoding="utf-8"?>
<project>
<assemblies>
<assembly location="C:\workspace\SRX\SRXClientNET\SRXClientNet\build\package\SRXClientNet-1.0\bin\net\1.1\release\SRXClientNet.dll" documentation="C:\workspace\SRX\SRXClientNET\SRXClientNet\build\package\SRXClientNet-1.0\bin\net\1.1\release\SRXClientNet.xml" />
</assemblies></project>
}}}

NDocTask.cs contains no code to manage <referencepaths> node.

We suggest the next code to fix this problem (between assemblies section and summaries section):

{{{
#!C#
// write out the references section
writer.WriteStartElement("referencePaths");
foreach (string directory in ReferencePaths.Includes)
{
writer.WriteStartElement("referencePath");
writer.WriteAttributeString("path", directory);
writer.WriteEndElement();
}
writer.WriteEndElement();
}}}

Discussion


Log in to post a comment.