gpt4 book ai didi

c# - 获取项目的程序集名称

转载 作者:太空宇宙 更新时间:2023-11-03 14:40:19 29 4
gpt4 key购买 nike

我需要什么

我想获取 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;
}

最佳答案

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

我是怎么找到它的

这只是猜测,在我的例子中,我假设 Properties 是一堆 Property 项目。

之后,我收集了 IEnumerable 拥有的所有 key 对值。然后看到实际上有一个名为 AssemblyName 的项目确实与正确的值匹配。

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 匹配的第一个元素并获取它的值。

关于c# - 获取项目的程序集名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57198392/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com