c# - 如何通过 netcore 项目获取所有隐式引用的 dll?
问题描述
语境
我目前正在开发某种具有大量代码生成功能的 ide,它使用 C# 作为目标语言,用于从另一种高级语言进行翻译。
问题
现在我正在尝试实现一个自动完成功能,比如在 VisualStudio 或 Rider 中。但是,我遇到了一个问题——我可以从哪里检索在 netcore 框架 DLL 中定义的可用符号(如类、结构、命名空间等),如 mscorlib.dll、System.Data.dll?
我对由 XML .csproj 文件定义的基于 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。但是我应该使用其中的哪一个,以及如何使用?
解决方案
推荐阅读
- python-3.x - Python:找到一列的最大值并在同一行中提取其他列的值
- c++ - c++ std::vector 在 foreach 循环中修改行为
- google-cloud-platform - 谷歌云和密钥管理
- reactjs - 使用 Reactjs 从客户端上的文件数组中渲染图像
- mysql - Mysql按多个表计数分组
- linux - 在 C 程序中调用 pppd 会阻塞线程
- javascript - JavaScript 为页面上的所有 Web 部件分配颜色
- woocommerce - 如何隐藏某个品类单品页面的SKU?
- javascript - 我的 Angular Universal SPA 消耗大量内存。如何识别内存泄漏的位置?
- c# - 按住鼠标按钮时充电并释放它