首页 > 解决方案 > 如何通过 netcore 项目获取所有隐式引用的 dll?

问题描述

语境

我目前正在开发某种具有大量代码生成功能的 ide,它使用 C# 作为目标语言,用于从另一种高级语言进行翻译。

问题

现在我正在尝试实现一个自动完成功能,比如在 VisualStudio 或 Rider 中。但是,我遇到了一个问题——我可以从哪里检索在 netcore 框架 DLL 中定义的可用符号(如类、结构、命名空间等),如 mscorlib.dll、System.Data.dll?

我对由 XML .cs​​proj 文件定义的基于 netcore 的项目特别感兴趣。

我很确定应该有一些用于解决 csproj 依赖项和东西的库/NuGet 包。但是很难找到,因为 Google 搜索结果中充斥着大量“适合初学者”的 Microsoft 手册,这些手册告诉您如何使用 dotnet new 创建新项目。

输入数据:假设我们有这样的 .csproj:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net5.0</TargetFramework>
    </PropertyGroup>
</Project>

我们有两个重要的字符串Sdk="Microsoft.NET.Sdk",据我了解,它们确定了一组与 MSBuild 相关的东西,比如目标和其他东西。并且net5.0它以某种方式转化为对一些神秘的 NuGet 元包的引用。

这两者可能还有其他一些变体,这些变体导致不同的隐式引用包,我想知道究竟是哪一个。

所需的输出数据

拥有某种 csproj 抽象会很棒,它可以提供所有依赖项的列表,显式和隐式,稍后可以由 Mono.Cecil 解析,等等。

我知道,有 Roslyn、Nuget 和 MsBuild。但是我应该使用其中的哪一个,以及如何使用?

标签: c#.net-coremsbuildnugetcsproj

解决方案


推荐阅读