gpt4 book ai didi

visual-studio - 自动添加 Visual Studio "External Tools..."菜单选项的 PowerShell 脚本?

转载 作者:行者123 更新时间:2023-12-04 03:52:35 25 4
gpt4 key购买 nike

我们使用 Nuget 来管理我们的内部工具链并安装一些 PowerShell 脚本,我们目前通过自定义“外部工具...”菜单选项手动将其包含在 Visual Studio 中。

如果有一个 PowerShell 脚本可以自动添加通常需要“外部工具...”对话框的菜单选项,我会很高兴。是否有 API 可以执行此操作?

我已经编写了大部分开发人员入职流程的脚本,以自动配置开发机器,除了像这样的一些奇怪的事情。

任何想法表示赞赏。

最佳答案

这是可能的。

在有权访问 DTE 对象的 NuGet 包的 init.ps1 文件中,可以从动态创建的包含用户设置配置的文件导入新工具,然后在用户设置被删除后删除进口。

这是一个执行导入的命令示例。该示例启动 Powershell,在项目的根目录中执行脚本。请注意,我使用 VS v9.0 以获得最大的向后兼容性,但也可以只导出 v15.0(或更新版本)中的现有工具菜单配置,并相应地替换下面文件中的内容。

init.ps1 文件内容

# NuGet Package installation script. Run 
# first time NuGet package installed to solution.
param($installPath, $toolsPath, $package, $project)

# Determine fully qualified path to a temp file
$fileName = [System.IO.Path]::GetTempPath() + [System.Guid]::NewGuid().ToString() + ".vssettings";

# Create User Settings file:
'<UserSettings>
<ApplicationIdentity version="9.0"/>
<ToolsOptions/>
<Category name="Environment_Group" RegisteredName="Environment_Group">
<Category name="Environment_ExternalTools" Category="{E8FAE9E8-FBA2-4474-B134-AB0FFCFB291D}" Package="{DA9FB551-C724-11d0-AE1F-00A0C90FFFC3}" RegisteredName="Environment_ExternalTools" PackageName="Visual Studio Environment Package">
<PropertyValue name="Launch Powershell.Command">powershell.exe</PropertyValue>
<PropertyValue name="Launch Powershell.Arguments">"&amp; ''$(ProjectDir)\Myscript.ps1''"</PropertyValue>
<PropertyValue name="Launch Powershell.InitialDirectory">"$(ProjectDir)"</PropertyValue>
<PropertyValue name="Launch Powershell.SourceKeyName"/>
<PropertyValue name="Launch Powershell.UseOutputWindow">true</PropertyValue>
<PropertyValue name="Launch Powershell.PromptForArguments">false</PropertyValue>
<PropertyValue name="Launch Powershell.CloseOnExit">true</PropertyValue>
<PropertyValue name="Launch Powershell.IsGUIapp">false</PropertyValue>
<PropertyValue name="Launch Powershell.SaveAllDocs">true</PropertyValue>
<PropertyValue name="Launch Powershell.UseTaskList">false</PropertyValue>
<PropertyValue name="Launch Powershell.Unicode">false</PropertyValue>
<PropertyValue name="Launch Powershell.Package">{00000000-0000-0000-0000-000000000000}</PropertyValue>
<PropertyValue name="Launch Powershell.NameID">0</PropertyValue>
<PropertyValue name="ToolNames">Launch Powershell</PropertyValue>
</Category>
</Category>
</UserSettings>' >> $fileName


# Perform the import of the custom tool
$project.DTE.ExecuteCommand("Tools.ImportandExportSettings", "/import:""$fileName""");

"--Remove file"
Remove-Item -path $fileName

MyProject.nuspec(部分)内容

.nuspec 文件中,确保包含 init.ps1 文件。在下面的例子中,init.ps1 的源代码位于“Scripts”文件夹中名为“MyProject”的 Visual Studio 项目中。

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
...
</metadata>
<files>
...
<!-- NuGet Package installation script. Run first time NuGet package installed to solution. -->
<file src="Scripts\init.ps1" target="tools\init.ps1" />
</files>
</package>

关于visual-studio - 自动添加 Visual Studio "External Tools..."菜单选项的 PowerShell 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21340057/

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