Add comprehensive Rider-specific troubleshooting guide for XML docs
Co-authored-by: omegaleo <5655201+omegaleo@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,266 @@
|
||||
# Rider-Specific: Troubleshooting XML Documentation Display
|
||||
|
||||
## The Problem
|
||||
|
||||
You're consuming OmegaLeo.HelperLib in your project (e.g., in HomeController.cs) and when hovering over methods like `GetChangelogMarkdown` or `BenchmarkUtility.Start`, you only see:
|
||||
|
||||
```
|
||||
[Documentation("GetChangelogMarkdown", "Generates...", null, "")]
|
||||
public static string GetChangelogMarkdown(IEnumerable<Assembly> assemblies)
|
||||
in class OmegaLeo.HelperLib.Changelog.Helpers.ChangelogHelper
|
||||
```
|
||||
|
||||
Instead of the rich XML documentation.
|
||||
|
||||
## Why This Happens in Rider
|
||||
|
||||
Rider has several caching mechanisms that can prevent it from picking up XML documentation files, especially after they've been regenerated or updated.
|
||||
|
||||
## Verification: Are XML Files Present?
|
||||
|
||||
First, verify the XML files exist and have content:
|
||||
|
||||
```bash
|
||||
# Check if XML files exist next to the DLLs
|
||||
ls -la bin/Debug/net*/OmegaLeo.HelperLib*.xml
|
||||
|
||||
# Check content of Changelog XML
|
||||
cat bin/Debug/net*/OmegaLeo.HelperLib.Changelog.xml
|
||||
```
|
||||
|
||||
You should see files like:
|
||||
- `OmegaLeo.HelperLib.xml`
|
||||
- `OmegaLeo.HelperLib.Changelog.xml`
|
||||
- `OmegaLeo.HelperLib.Game.xml`
|
||||
|
||||
Each should contain `<member>` tags with `<summary>` elements.
|
||||
|
||||
## Solution Steps for Rider
|
||||
|
||||
### Step 1: Invalidate Caches (Most Common Fix)
|
||||
|
||||
1. In Rider: **File → Invalidate Caches...**
|
||||
2. Check **all boxes**:
|
||||
- ✅ Clear file system cache and Local History
|
||||
- ✅ Clear VCS Log caches and indexes
|
||||
- ✅ Clear downloaded shared indexes
|
||||
- ✅ Clear workspace model
|
||||
- ✅ Clean NuGet cache
|
||||
3. Click **Invalidate and Restart**
|
||||
|
||||
### Step 2: Clean and Rebuild
|
||||
|
||||
After Rider restarts:
|
||||
|
||||
```bash
|
||||
dotnet clean
|
||||
dotnet build --configuration Debug
|
||||
```
|
||||
|
||||
Or in Rider:
|
||||
1. **Build → Clean Solution**
|
||||
2. **Build → Rebuild All**
|
||||
|
||||
### Step 3: Check XML File Location
|
||||
|
||||
Rider needs the XML file to be **in the same directory as the DLL**:
|
||||
|
||||
```
|
||||
bin/Debug/net8.0/
|
||||
├── OmegaLeo.HelperLib.Changelog.dll ← Must be here
|
||||
└── OmegaLeo.HelperLib.Changelog.xml ← And here
|
||||
```
|
||||
|
||||
Verify:
|
||||
```bash
|
||||
# Should show both .dll and .xml
|
||||
ls -1 bin/Debug/net*/OmegaLeo.HelperLib.Changelog.*
|
||||
```
|
||||
|
||||
### Step 4: Verify XML Content
|
||||
|
||||
Check the XML actually has the documentation:
|
||||
|
||||
```bash
|
||||
grep -A 5 "GetChangelogMarkdown" bin/Debug/net*/OmegaLeo.HelperLib.Changelog.xml
|
||||
```
|
||||
|
||||
Should show:
|
||||
```xml
|
||||
<member name="M:OmegaLeo.HelperLib.Changelog.Helpers.ChangelogHelper.GetChangelogMarkdown...">
|
||||
<summary>Generates a markdown formatted changelog from the changelog attributes in the provided assemblies.</summary>
|
||||
</member>
|
||||
```
|
||||
|
||||
### Step 5: Force Rider to Reload References
|
||||
|
||||
1. Right-click on your project in Solution Explorer
|
||||
2. **Properties**
|
||||
3. Go to **Build → Output**
|
||||
4. Note the output path
|
||||
5. Check that path has both .dll and .xml files
|
||||
|
||||
Or try:
|
||||
1. Remove the reference to OmegaLeo.HelperLib.Changelog
|
||||
2. Rebuild
|
||||
3. Re-add the reference
|
||||
4. Rebuild
|
||||
|
||||
### Step 6: Check Quick Documentation Window
|
||||
|
||||
Instead of hover tooltip, try:
|
||||
1. Place cursor on `GetChangelogMarkdown`
|
||||
2. Press **Ctrl+Q** (Windows/Linux) or **F1** (macOS)
|
||||
3. This opens the Quick Documentation window
|
||||
4. It should show the full documentation
|
||||
|
||||
### Step 7: Verify Reference Type
|
||||
|
||||
Check how you're referencing the library:
|
||||
|
||||
**If using ProjectReference:**
|
||||
```xml
|
||||
<ProjectReference Include="..\HelperLib\OmegaLeo.HelperLib.Changelog\OmegaLeo.HelperLib.Changelog.csproj" />
|
||||
```
|
||||
Rider might prioritize source code over XML. Consider using a built DLL reference or PackageReference instead.
|
||||
|
||||
**If using PackageReference (NuGet):**
|
||||
```xml
|
||||
<PackageReference Include="OmegaLeo.HelperLib.Changelog" Version="1.2.1.1" />
|
||||
```
|
||||
Ensure the package includes the .xml files in the lib/ folder.
|
||||
|
||||
**If using DLL Reference:**
|
||||
```xml
|
||||
<Reference Include="OmegaLeo.HelperLib.Changelog">
|
||||
<HintPath>path\to\OmegaLeo.HelperLib.Changelog.dll</HintPath>
|
||||
</Reference>
|
||||
```
|
||||
Ensure the .xml file is in the same directory as the .dll.
|
||||
|
||||
## Advanced: Rider's External Annotations Cache
|
||||
|
||||
If the above doesn't work, Rider might have cached old annotations:
|
||||
|
||||
### Windows:
|
||||
```
|
||||
%LOCALAPPDATA%\JetBrains\Rider<version>\resharper-host\local\Transient\ReSharperHost\
|
||||
```
|
||||
|
||||
### macOS:
|
||||
```
|
||||
~/Library/Caches/JetBrains/Rider<version>/resharper-host/local/Transient/ReSharperHost/
|
||||
```
|
||||
|
||||
### Linux:
|
||||
```
|
||||
~/.cache/JetBrains/Rider<version>/resharper-host/local/Transient/ReSharperHost/
|
||||
```
|
||||
|
||||
Try deleting these caches while Rider is closed.
|
||||
|
||||
## Testing the XML Documentation
|
||||
|
||||
Create a simple test:
|
||||
|
||||
```csharp
|
||||
using OmegaLeo.HelperLib.Changelog.Helpers;
|
||||
using System.Reflection;
|
||||
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
// Hover over GetChangelogMarkdown - should show docs
|
||||
var markdown = ChangelogHelper.GetChangelogMarkdown(
|
||||
new[] { Assembly.GetExecutingAssembly() }
|
||||
);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Build and open in Rider. If hover still doesn't work:
|
||||
1. Try Ctrl+Q (Quick Documentation)
|
||||
2. Check Find Usages → see if it shows documentation
|
||||
|
||||
## Still Not Working?
|
||||
|
||||
### Check Rider Settings
|
||||
|
||||
1. **File → Settings → Editor → General → Code Completion**
|
||||
2. Ensure **Show the documentation popup in (ms)**: is not 0
|
||||
3. Try increasing to 500-1000ms
|
||||
|
||||
### Check ReSharper Settings
|
||||
|
||||
1. **File → Settings → Tools → ReSharper**
|
||||
2. **External Sources → Enable XML Documentation comments**
|
||||
3. Ensure it's enabled
|
||||
|
||||
### Last Resort: Complete Reset
|
||||
|
||||
1. Close Rider
|
||||
2. Delete `.idea` folder in your solution directory
|
||||
3. Delete Rider cache:
|
||||
- Windows: `%LOCALAPPDATA%\JetBrains\Rider<version>\`
|
||||
- macOS: `~/Library/Caches/JetBrains/Rider<version>/`
|
||||
- Linux: `~/.cache/JetBrains/Rider<version>/`
|
||||
4. Reopen solution in Rider
|
||||
5. Let it reindex everything
|
||||
|
||||
## Expected Result
|
||||
|
||||
After following these steps, hovering over `GetChangelogMarkdown` should show:
|
||||
|
||||
```
|
||||
GetChangelogMarkdown(IEnumerable<Assembly> assemblies): string
|
||||
|
||||
Generates a markdown formatted changelog from the changelog
|
||||
attributes in the provided assemblies.
|
||||
|
||||
Returns: The generated markdown string
|
||||
```
|
||||
|
||||
## Comparison: What You See vs. What You Should See
|
||||
|
||||
### What You're Seeing (Wrong):
|
||||
```
|
||||
[Documentation("GetChangelogMarkdown", "Generates...", null, "")]
|
||||
public static string GetChangelogMarkdown(IEnumerable<Assembly> assemblies)
|
||||
```
|
||||
|
||||
### What You Should See (Correct):
|
||||
```
|
||||
GetChangelogMarkdown(IEnumerable<Assembly> assemblies): string
|
||||
|
||||
Generates a markdown formatted changelog from the changelog
|
||||
attributes in the provided assemblies.
|
||||
```
|
||||
|
||||
## If All Else Fails
|
||||
|
||||
The issue might be with how the library is being referenced. Try:
|
||||
|
||||
1. **Create a fresh test project:**
|
||||
```bash
|
||||
dotnet new console -n TestRider
|
||||
cd TestRider
|
||||
dotnet add reference path/to/OmegaLeo.HelperLib.Changelog.csproj
|
||||
dotnet build
|
||||
```
|
||||
|
||||
2. **Open ONLY this test project in Rider**
|
||||
|
||||
3. **Test if documentation appears**
|
||||
|
||||
If documentation works in the test project but not in your main project, the issue is with your main project's configuration or Rider's cache for that specific solution.
|
||||
|
||||
## Summary
|
||||
|
||||
The XML documentation IS being generated correctly. Rider-specific caching and reference resolution can prevent it from being displayed. The most common fix is:
|
||||
|
||||
1. **Invalidate Caches and Restart**
|
||||
2. **Clean and Rebuild**
|
||||
3. **Ensure .xml files are next to .dll files**
|
||||
|
||||
These steps should resolve the issue in 99% of cases!
|
||||
Reference in New Issue
Block a user