簡體   English   中英

解決方案中的Visual Studio 2017可擴展性項目計數

[英]Visual Studio 2017 Extensibility Project count in Solution

我有兩個Visual Studio解決方案,可以這樣說SolutionOne和SolutionTwo:

解決方案一

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26403.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2408EC7B-2E06-46A5-B6AC-D4E985E30CBB}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{DFF21B2A-7F52-448D-8867-D1C4EEAF73A7}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Clients", "Clients", "{BABF1C97-CB5C-4AC5-81C6-6A81B0D45E27}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Api", "src\Api\Api.csproj", "{7059F655-BBD7-4CA3-9A76-2FF198996DA8}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "src\Client\Client.csproj", "{B707F1AF-DD46-45D6-B4C5-BC2E9A3FB9B7}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ResourceOwnerClient", "src\ResourceOwnerClient\ResourceOwnerClient.csproj", "{40674C67-6A97-4B85-8154-92AEC74A37A0}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MvcClient", "src\MvcClient\MvcClient.csproj", "{4CFB4883-9929-4814-BE22-2E19476CE4A3}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IdentityServerWithAspNetIdentity", "src\IdentityServerWithAspNetIdentity\IdentityServerWithAspNetIdentity.csproj", "{1ECB5581-FFA5-4C11-A491-C85ABD962033}"
EndProject

解決方案二

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26403.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApplication1", "WebApplication1\WebApplication1.csproj", "{C495AA01-06E7-47A1-B5A4-97352C689596}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{250ABB36-7C50-48BC-AEC7-7B0EA549C277}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp1", "ConsoleApp1\ConsoleApp1.csproj", "{9C73E333-1C3D-4BB4-91B6-2C1C73BFB726}"
EndProject

**注意:為簡潔起見,兩個解決方案中的“全局”部分均已刪除。

我正在嘗試使用以下代碼從兩個解決方案中獲取項目詳細信息。

    private void MenuItemCallback(object sender, EventArgs e)
    {
        var dte = Package.GetGlobalService(typeof(DTE)) as DTE2;
        Solution2 sln = dte.Solution as Solution2;

        string msg = string.Empty;
        foreach (Project prop in sln.Projects)
        {
            msg += prop.Name  +"\n";
        }
        MessageBox.Show(msg);
    }

以上代碼的輸出

SolutionOne是:

  • src
  • 解決方案

解決方案二是:

  • Web應用程序1
  • ClassLibrary1
  • ConsoleApp1

我的問題是,即使SolutionOne有5個項目,但與其捕獲所有這5個項目,不如在輸出中提供兩個解決方案文件夾。 為什么會這樣呢? 難道它只會捕獲第一級物品?

解決方案的項目結構是遞歸的,而不是線性的,因為可以有解決方案文件夾(建模為EnvDTE.Project),而該文件夾又包含其他解決方案文件夾或項目。 在此處查看如何導航的示例:

HOWTO:從Visual Studio .NET宏或加載項中導航解決方案的文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM