【问题标题】:Access the powershell console (package manager console) of visual studio programmatically in an extension在扩展中以编程方式访问 Visual Studio 的 powershell 控制台(包管理器控制台)
【发布时间】:2013-09-26 14:07:13
【问题描述】:

我正在尝试开发一个 Visual Studio 扩展来自动化我们的实体框架迁移过程的某些部分。我检查以编程方式添加迁移,但在查看实体框架源代码后,在 powershell 脚本中完成了很多工作,所以我想在包管理器控制台(nuget)上获得一个挂钩并在那里发送命令并从控制台读取结果如果可能的话。

如何在 Visual Studio 扩展中以编程方式访问包管理器控制台?

例如,我想将以下命令发送到包管理器控制台。

add-migration migration01

【问题讨论】:

  • 你的扩展有什么收获吗?
  • 很遗憾没有。这是一个“很高兴拥有”,有很多新东西要挖掘,所以我选择了简单的路径并在包管理器控制台中手动编写我需要的行。

标签: c# visual-studio entity-framework powershell visual-studio-2012


【解决方案1】:

在包管理器控制台中运行脚本的最佳方式是将参数传递给它。

EnvDTE.DTE _ObjDTE;
_ObjDTE = (DTE)System.Runtime.InteropServices.Marshal.GetActiveObject("VisualStudio.DTE");
var script = "function global:SaveAll {write-host \"All files saved.\"} SaveAll";
_ObjDTE.ExecuteCommand("View.PackageManagerConsole", script);

【讨论】:

  • 谢谢。我希望从代码中访问包管理器,您的回答很有帮助。
【解决方案2】:

有一个作为 Nuget 的 Nuget 发行版,它使所有 Nuget 功能都可以轻松使用,只需获取以下 http://nuget.codeplex.com/ 包并使用它。

它还有一个 PackageManager...

我猜这样的东西可以安装一些东西:

 new PackageManager(
    PackageRepositoryFactory.Default.CreateRepository("source"), 
    "path").InstallPackage("packageId")

【讨论】:

  • 这是安装在visual studio上的nuget。这东西我已经有了。我想知道的是如何使用 dte 或其他东西在 Visual Studio 的扩展中以编程方式访问它。我看到有一个使用 nuget 的 api,但它似乎只有包管理的功能,我没有看到任何东西可以将自定义命令字符串发送到包管理器控制台(使用实体框架 powershell api)。
  • 查看编辑,使用 Nuget 库,您应该能够实例化 PackageManager 并安装包
猜你喜欢
  • 1970-01-01
  • 2013-01-08
  • 2016-09-10
  • 1970-01-01
  • 2018-04-29
  • 2020-04-10
  • 2011-04-23
  • 2021-08-21
  • 1970-01-01
相关资源
最近更新 更多