【发布时间】:2019-09-20 19:01:11
【问题描述】:
在 Visual Studio 扩展中,我需要遍历加载的解决方案中的所有项目并找到所有依赖项(NuGet 包和程序集)。以下代码适用于旧的非 SDK 样式项目,但不适用于新的 SDK 样式项目。
var dte = ApplicationObject; // DTE object
if (dte == null || dte.Solution == null || !dte.Solution.IsOpen)
{
return;
}
foreach (Project project in dte.Solution.Projects)
{
var vsProj = project.Object as VSProject;
if (vsProj == null || vsProj.References == null)
{
// Project not loaded
continue;
}
foreach (Reference reference in vsProj.References)
{
if (reference.SourceProject != null
|| reference.Type != prjReferenceType.prjReferenceTypeAssembly)
{
// Skip over non assembly references
continue;
}
// reference.Name contains the reference name
}
}
在新的 SDK 样式项目中,“引用”现在称为 Dependencies,但 VSProject 上没有此类属性。那么对于 SDK 风格的项目,有什么方法可以得到这个呢?
【问题讨论】:
-
嗨,我在 VS2017 和 VS2019 中尝试过,上面的代码可以识别 .net core 或 .net 标准项目中的 nuget 包和引用。
-
这个问题有什么更新吗?您能否分享更多详细信息(相对于版本、项目类型、框架、您得到的错误行为)以帮助重现您遇到的问题 :)
-
@LanceLi-MSFT 很抱歉没有早点回来。使用上面的代码,当它在新的 SDK 样式项目(针对 .netcoreapp2.1)上运行时,我在
vsProj.References中得到一个空列表。我正在使用 VS2019。请注意,上面的代码在事件IVsSolutionEvents.OnAfterOpenSolution中被调用。
标签: visual-studio-extensions vsix