Age | Commit message (Collapse) | Author |
|
Closes #98
|
|
Due to some recent changes to the C# signature (operators), it was not properly connecting the member to
the existing node, causing a duplicate entry in the XML. By using ILASM (which is less likely to change),
we work around this problem. Closes #107.
|
|
This can be disabled by passing in `-disable-searchdir-recurse`. Closes #112
|
|
|
|
assemblies using .net 4.5
Closes #29
|
|
|
|
Closes #59
|
|
|
|
Previously, mdoc simply used the compiler-generated method names for operators, such as `op_Multiply`, instead
of `operator *`. This releases fixes that for all unary, binary, comparison, and conversion operators.
Closes #82
|
|
|
|
Closes #29 and #58
|
|
You can now add a new element to frameworks.xml, `/Frameworks/Framework/import`, which is a path to the import documentation file (generated via the compiler's `/doc` parameter).
An example test case was added in the make target, `check-monodocer-import-fx`. Closes #43
|
|
Resolves #62
|
|
|
|
|
|
Now using MSBuild.
Updated some test data to reflect newly thrown exceptions.
Updated to a newer version of NUnit.
|
|
|
|
Resolves #53
|
|
|
|
Resolves #49. Additionally, enabled optimizations in release mode.
|
|
|
|
|
|
This full resolves #44 as it also uses the correct member formatter for member comparisons
|
|
|
|
Since VB.NET can explicitly implement a member without using the same
naming convention as you might use in C#, it was causing some issues with
mdoc matching xml member nodes to reflected types. In particular, the cases
supported with this patch are:
- interface type and member name concatenated. e.g. `IListAdd`
- same as above, but when the interface doesn’t match the interface where the member is defined. e.g. `ICollection` inherits `IEnumerable`. So `System.Collections.IEnumerable.GetEnumerator` is expressed in some types as `ICollectionGetEnumerator`
- same name as the interface member e.g. `Microsoft.VisualBasic.Compability.VB6.BaseControlArray$System.ComponentModel.ISupportInitialize.BeginInit`
Related #44
|
|
This fixes an issue where an extension method in multiple frameworks might have a slightly different signature,
due to a different parameter name, resulting in an InvalidOperationException because a duplicate extension
was added to the index file.
Additionally, this improves robustness of assembly search paths.
Related to to #27.
|
|
|
|
|
|
When a type overrides a member in one framework, but does not in another framework
processed after the first, the Member node was being removed, even though the entry
remained in teh first framework index file. This Resolves #39
|
|
If a framework has a different inheritance chain, another `Base/BaseTypeName`
element will be added with a `FrameworkAlternate` attribute.
Resolves #16
|
|
Fixes #32, which was an issue with the ascii null character. It caused the resulting XML to be
malformed.
|
|
A MemberGroup can be intermixed amongst the other Member nodes.
It will be sorted to be in front of the other similarly named Members.
It must contain a MemberName attribute, and can have: Docs, and AssemblyInfo nodes.
Resolves #35
|
|
mdoc now supports documenting multiple frameworks. You can use this new functionality by passing the path to a configuration file in the `-frameworks` (or `-fx` for short) parameter.
```
mdoc update -o path/to/documentationXML -frameworks path/to/frameworks.xml
```
This command will result in one XML file per framework in the `path/to/documentationXML/FrameworksIndex` folder.
``` xml
<?xml version="1.0" encoding="utf-8"?>
<Framework Name="Two">
<Namespace Name="MyFramework.MyOtherNamespace">
<Type Name="MyFramework.MyOtherNamespace.MyOtherClass" Id="T:MyFramework.MyOtherNamespace.MyOtherClass">
<Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.#ctor" />
...
</Type>
</Namespace>
</Framework>
```
Configuration File
This is a sample configuration file:
``` xml
<?xml version="1.0" encoding="utf-8"?>
<Frameworks>
<Framework Name="One" Source="One">
<assemblySearchPath>dependencies/One</assemblySearchPath>
</Framework>
<Framework Name="Two" Source="Two">
<assemblySearchPath>dependencies/Two</assemblySearchPath>
</Framework>
</Frameworks>
```
Note that the `assemblySearchPath` is meant to house dependent assemblies that mono.cecil must be able to resolve. You can have as many as you need for each framework if you happen to have them separated into multiple folders. Also the `-L` parameter applies globally to every framework.
Frameworks Config Bootstrap
To simplify the tedium of creating the configuration file, a simple command was added that will use the folder structure to create a basic configuration file:
``` csharp
mdoc fx-bootstrap path/to/frameworks
```
This will create a file at `path/to/frameworks/frameworks.xml`, using the folders in `path/to/frameworks` as the names/paths
DocId Signatures
You can now pass a flag to add a `DocId` signature to every `Type` and `Member` node.
```
mdoc update -o out/path some.dll -use-docid
```
_please note_: framework index files will _always_ use the DocId as their identifiers.
Frameworks Index files Grouped by Namespace
Framework index files now have types grouped by namespace. Example:
``` xml
<?xml version="1.0" encoding="utf-8"?>
<Framework Name="Two">
<Namespace Name="MyFramework.MyOtherNamespace">
<Type Name="MyFramework.MyOtherNamespace.MyOtherClass" Id="T:MyFramework.MyOtherNamespace.MyOtherClass">
<Member Id="M:MyFramework.MyOtherNamespace.MyOtherClass.#ctor" />
...
</Type>
</Namespace>
</Framework>
```
Bug Fixes and Enhancements
- Resolves #13
- Resolves #27
- Resolves #31
- Resolves #33
|
|
These files were inadvertently left out of PRs that were merged to master
|
|
Resolves #12
|
|
Closes #6
|
|
In some cases, for example when running in "frameworks" mode (ie. https://github.com/mono/api-doc-tools/pull/18), you might have non-managed .dlls in the directory. This change allows mdoc to simply write the fact that it couldn't load the assembly, and continue doing work.
Resolves #7
Potentially provides a temporary workaround for #8, #9
|
|
You can `make prepare all check` to compile and run unit tests.
Additionally, you can open `apidoctools.sln` in Visual Studio to develop and debug.
_Please Note:_ You will have to `make prepare all CONFIGURATION=Debug` for VS to work, as this
compiles external dependencies, and copies them to the `bin/Debug` folder, where VS will be expecting them.
|
|
These tests are sensitive to differences in line endings between Windows and
other platforms. This patch changes the diff commands used on Windows to
ignore changes in whitespaces at end of lines.
|
|
We don't use svn anymore since a very long time and some diff implementations (e.g. in Alpine) don't support --exclude.
Removing the argument is an easy fix.
|
|
|
|
|
|
[mdoc] Extension method crash fix, removes -multiassembly
|
|
|
|
to appease MS msbuild
|
|
|
|
use full path.
One of csc prerequisites because csc uses -lib as path which is considered after
RuntimeEnvironment.GetRuntimeDirectory which makes -lib useless
|
|
|
|
This was inadvertently removed in https://github.com/mono/mono/commit/611a43ee0f672adbac3e25dc77731843a3d10cf1 from MulticastDelegate.CombineImpl().
Add the type check back in the Delegate base class, we already do the same in Remove().
Add unit tests to cover the behavior to the corlib test suite. (reverted from commit f29878dc713f4e148fe0a1e703fae8929e6fb6e0)
Needed to update some monodoc tests to match that an exception is now thrown again.
|
|
E.g. on a German language OS the "make check-mdoc-export-html" test fails with this:
```
diff --exclude=.svn -rup Test/en.expected/Mono.DocTest/Widget.xml Test/en.actual/Mono.DocTest/Widget.xml
--- Test/en.expected/Mono.DocTest/Widget.xml 2015-11-18 04:42:11.000000000 +0100
+++ Test/en.actual/Mono.DocTest/Widget.xml 2016-02-04 02:38:09.000000000 +0100
@@ -1061,8 +1061,8 @@
</Docs>
</Member>
<Member MemberName="PI">
- <MemberSignature Language="C#" Value="protected const double PI = 3.14159;" />
- <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3.14159)" />
+ <MemberSignature Language="C#" Value="protected const double PI = 3,14159;" />
+ <MemberSignature Language="ILAsm" Value=".field familyorassembly static literal float64 PI = (3,14159)" />
<MemberType>Field</MemberType>
<AssemblyInfo>
<AssemblyVersion>0.0.0.0</AssemblyVersion>
@@ -1070,7 +1070,7 @@
<ReturnValue>
<ReturnType>System.Double</ReturnType>
</ReturnValue>
- <MemberValue>3.14159</MemberValue>
+ <MemberValue>3,14159</MemberValue>
<Docs>
```
The fix is to always use InvariantCulture for literal formatting.
|