Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
724cf09
Initial plan
Copilot Feb 11, 2026
56d2b71
Add XML Documentation Generator tool
Copilot Feb 11, 2026
f38ca58
Add MSBuild targets to projects for XML doc generation
Copilot Feb 11, 2026
2c19eb7
Improve XmlDocGenerator robustness and add documentation
Copilot Feb 11, 2026
3aca533
Add example documentation showing before/after IDE tooltip behavior
Copilot Feb 11, 2026
43a9e52
Add comprehensive test project with 42 passing tests
Copilot Feb 11, 2026
24383da
Add comprehensive README for test project
Copilot Feb 11, 2026
e0adb2d
Restructure XmlDocGenerator as MSBuild SDK package for NuGet distribu…
Copilot Feb 11, 2026
5c814c9
Enable automatic XML doc generation via Documentation package dependency
Copilot Feb 11, 2026
7b1c16b
Update XmlDocGenerator README with NuGet package usage
Copilot Feb 11, 2026
22c5c4b
cleanup
omegaleo Feb 11, 2026
f5b0e32
Fix XML documentation generation to appear in IDE tooltips + recommen…
Copilot Feb 11, 2026
2bd078c
updated to .net 9
omegaleo Feb 11, 2026
9d828ce
Add comprehensive documentation on why XML docs don't show for source…
Copilot Feb 11, 2026
374035e
Fix: Add GenerateDocumentationFile to Changelog and Game projects + u…
Copilot Feb 11, 2026
9a00554
Add comprehensive Rider-specific troubleshooting guide for XML docs
Copilot Feb 11, 2026
f4abb1c
Document: Explain why referenced project files appear in build output
Copilot Feb 11, 2026
5f42d8c
Add triple-slash comments + IDE plugin analysis documentation
Copilot Feb 11, 2026
2957b19
WIP: Auto-generate triple-slash comments without additional packages
Copilot Feb 11, 2026
14f5099
Add comprehensive solution summary for auto-generated comments
Copilot Feb 11, 2026
b86dfd5
Fresh approach: Use Roslyn Source Generator to override /// with Docu…
Copilot Feb 11, 2026
df1f42e
Final solution: Clean code with DocumentationAttribute only, XML for …
Copilot Feb 11, 2026
a440ac0
Remove triple-slash comments - keep only DocumentationAttribute for c…
Copilot Feb 11, 2026
8240891
Add complete solution documentation for DocumentationAttribute Intell…
Copilot Feb 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/workflows/github-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -75,3 +75,16 @@ jobs:
run: dotnet pack "./OmegaLeo.HelperLib.Shared/OmegaLeo.HelperLib.Shared.csproj" -c Release /p:Version=${{ inputs.tag_name }}
- name: Publish to GitHub Packages
run: dotnet nuget push ./OmegaLeo.HelperLib.Shared/bin/Release/OmegaLeo.HelperLib.Shared.${{ inputs.tag_name }}.nupkg --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/omegaleo/index.json --skip-duplicate

publish-xml-lib:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .Net Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: '8.0.x'
- name: Create Nuget Package
run: dotnet pack "./OmegaLeo.HelperLib.XmlDocGenerator/OmegaLeo.HelperLib.XmlDocGenerator.csproj" -c Release /p:Version=${{ inputs.tag_name }}
- name: Publish to GitHub Packages
run: dotnet nuget push ./OmegaLeo.HelperLib.XmlDocGenerator/bin/Release/OmegaLeo.HelperLib.XmlDocGenerator.${{ inputs.tag_name }}.nupkg --api-key ${{ secrets.GITHUB_TOKEN }} --source https://nuget.pkg.github.com/omegaleo/index.json --skip-duplicate
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@ riderModule.iml
/OmegaLeo.HelperLib.Web/publish
>>>>>>> Stashed changes
/OmegaLeo.HelperLib.Web/OmegaLeo.HelperLib.Web.csproj.user

# Test consumer projects
TestConsumer/
139 changes: 139 additions & 0 deletions BUILD_OUTPUT_EXPLAINED.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# Understanding Build Output: Why Referenced Project Files Appear

## The Question

*"The OmegaLeo.HelperLib/bin/Debug/netstandard2.1/ folder shows files for OmegaLeo.HelperLib.xml and the other libs as well. Is that normal?"*

## Short Answer

**YES, this is completely normal and expected behavior!** ✅

## What You're Seeing

When you build `OmegaLeo.HelperLib`, the output directory contains:

```
OmegaLeo.HelperLib/bin/Debug/netstandard2.1/
├── OmegaLeo.HelperLib.dll ← Main library
├── OmegaLeo.HelperLib.xml ← Main library's XML docs
├── OmegaLeo.HelperLib.Changelog.dll ← Referenced project
├── OmegaLeo.HelperLib.Changelog.xml ← Referenced project's XML docs
├── OmegaLeo.HelperLib.Documentation.dll ← Referenced project
├── OmegaLeo.HelperLib.Documentation.xml ← Referenced project's XML docs
├── OmegaLeo.HelperLib.Shared.dll ← Referenced project
├── OmegaLeo.HelperLib.Shared.xml ← Referenced project's XML docs
└── ... (PDB files, deps.json, etc.)
```

## Why This Happens

### Build-Time Behavior

When `OmegaLeo.HelperLib.csproj` has these `<ProjectReference>` entries:

```xml
<ItemGroup>
<ProjectReference Include="..\OmegaLeo.HelperLib.Changelog\..." />
<ProjectReference Include="..\OmegaLeo.HelperLib.Documentation\..." />
<ProjectReference Include="..\OmegaLeo.HelperLib.Shared\..." />
</ItemGroup>
```

MSBuild automatically:

1. **Builds the referenced projects** (if needed)
2. **Copies their output DLLs** to the main project's output directory
3. **Copies associated files** (XML documentation, PDB debug symbols)
4. **Does this transitively** - includes dependencies of dependencies

### Why?

This is necessary because:

- **Runtime Requirements**: The main assembly needs these DLLs to run
- **Development Experience**: Provides complete documentation for IntelliSense
- **Testing**: Allows running/debugging with all dependencies present
- **Deployment**: Ensures all required files are in one place

## What About NuGet Packages?

**Don't worry - NuGet packaging handles this correctly!**

### Package Contents

When you run `dotnet pack OmegaLeo.HelperLib.csproj`, the resulting `.nupkg` contains:

```
lib/netstandard2.1/
├── OmegaLeo.HelperLib.dll ← Only the main library
└── OmegaLeo.HelperLib.xml ← Only the main library's docs
```

**The referenced projects are NOT bundled inside!**

### Package Dependencies

Instead, the package declares **dependencies** in its `.nuspec`:

```xml
<dependencies>
<group targetFramework=".NETStandard2.1">
<dependency id="OmegaLeo.HelperLib.Changelog" version="1.2.1.1" />
<dependency id="OmegaLeo.HelperLib.Documentation" version="1.2.1.1" />
<dependency id="OmegaLeo.HelperLib.Shared" version="1.2.1.1" />
</group>
</dependencies>
```

When someone installs your package:
- NuGet downloads `OmegaLeo.HelperLib` package
- NuGet sees the dependencies
- NuGet downloads the dependency packages separately
- Each library is a separate, proper NuGet package

## Comparison: Build vs. Package

### Build Output (bin folder)
```
✅ Contains all DLLs and XML files (main + referenced)
✅ Ready to run/test immediately
✅ All dependencies in one place
```

### NuGet Package (nupkg file)
```
✅ Contains only main library's DLL and XML
✅ Lists dependencies separately
✅ Proper package architecture
✅ Allows version management per dependency
```

## This is Standard .NET Behavior

All .NET projects work this way:

- **Microsoft's Libraries**: System.Text.Json references System.Memory, etc.
- **Popular Libraries**: Newtonsoft.Json, Entity Framework, etc.
- **Your Projects**: Same behavior for all project references

## When Would This Be a Problem?

This would only be unusual if:

- ❌ The NuGet package bundled all DLLs together (it doesn't!)
- ❌ Referenced projects weren't in the output (they should be!)
- ❌ You're deploying and missing DLLs (build output has them all!)

## Summary

| Location | Behavior | Correct? |
|----------|----------|----------|
| `bin/Debug/` folder | Contains main + referenced DLLs & XML | ✅ YES - Normal |
| `.nupkg` package | Contains only main DLL & XML | ✅ YES - Correct |
| Package dependencies | Lists referenced projects | ✅ YES - Proper |

## Bottom Line

**Everything is working correctly!** The build output correctly includes all dependencies, and NuGet packaging correctly separates them into individual packages with proper dependency declarations.

This is exactly how .NET project references and NuGet packaging are supposed to work. No changes needed! 🎉
Loading