【问题标题】:Get assemblyname of a project获取项目的程序集名称
【发布时间】:2019-07-25 09:16:36
【问题描述】:

我需要什么

我想在 Visual Studio 扩展中获取项目的程序集名称。

因为我知道您可以在解决方案资源管理器中右键单击项目并选择Properties 时看到它。它将在标签Application 中显示Assemblyname

设置

我的扩展项目中有一个“命令”,当您右键单击解决方案资源管理器中的某些内容时会显示该命令。只要有人点击该命令,就会执行以下代码:

var dte = await GetDTE2Async();

await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

var selectedItem = GetSelectedItem(dte);
var props = selectedItem.ContainingProject.Properties;
//I just assumed that the `AssemblyName` could be somewhere in the `Properties` Property.

GetSelectedItem 方法如下所示:

public static ProjectItem GetSelectedItem(DTE2 dte)
{
    ThreadHelper.ThrowIfNotOnUIThread();
    var items = (Array)dte.ToolWindows.SolutionExplorer.SelectedItems;

    return items.Cast<UIHierarchyItem>().FirstOrDefault().Object as ProjectItem;
}

【问题讨论】:

    标签: c# visual-studio .net-assembly visual-studio-extensions visual-studio-2019


    【解决方案1】:

    对于其他有同样问题的人来说,我实际上已经非常接近我的目标了。

    我是怎么找到的

    这只是猜测,就我而言,我假设 Properties 是一堆 Property 项目。

    在那之后,我刚刚收集了IEnumerable 拥有的所有密钥对值。然后看到确实有一个名为AssemblyName的Item确实匹配了正确的值。

    var items = selectedItem.ContainingProject.Properties.Cast<Property>()
    
    var sb = new StringBuilder();
    
    foreach (var item in items)
    {
        sb.Append($"Name : {item.Name} ");
        try
        {
            sb.Append("Value : " + item.Value.ToString());
        }
        catch (Exception)
        {
            sb.Append("Value : NOT DEFINED (EXCEPTION)");
        }
        finally
        {
            sb.AppendLine();
        }
    }
    var output = sb.ToString();
    

    解决方案

    这是一个相当短的部分,但我们开始吧:

    var assemblyName = selectedItem.ContainingProject.Properties.Cast<Property>().FirstOrDefault(x=> x.Name == "AssemblyName").Value;
    

    基本上我只是搜索与名称AssemblyName 匹配的第一个元素并获取它的值。

    【讨论】:

    【解决方案2】:

    也许你可以试试:

    System.Reflection.Assembly.GetAssembly(Property's Type).FullName
    

    【讨论】:

    • 我已经试过了,它会导致System.__ComObject这绝对是错误的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多