以扩展的方式编程,以编程方式访问Visual Studio的PowerShell控制台(包管理器控制台)。

4
我正在尝试开发一个Visual Studio扩展程序,以自动化我们的Entity Framework迁移过程中的某些部分。我检查了可编程添加迁移,但在查看Entity Framework源代码后,许多操作是在PowerShell脚本中完成的,因此我想在包管理器控制台(NuGet)上挂钩,并发送命令并读取控制台上的结果(如果可能的话)。
如何在Visual Studio扩展程序中以编程方式访问包管理器控制台?
例如,我想将以下命令发送到包管理器控制台。
add-migration migration01

你的扩展做得怎么样了? - cederlof
1
很遗憾,这只是一个“好想法”,因为有很多新的东西需要我去挖掘,所以我选择了简单的方式,在包管理器控制台手动编写我需要的代码。 - Yepeekai
2个回答

2
在包管理器控制台运行脚本的最佳方法是将参数传递给它。
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);

谢谢。我想从代码中访问包管理器,你的答案帮了我很多。 - Ravi C

0

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

它还具有PackageManager...

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

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

这是在Visual Studio上安装的NuGet。我已经安装了它。我想知道的是如何在Visual Studio的扩展中通过DTE或其他方式以编程方式访问它。我看到有一个API可以使用NuGet,但似乎只有用于包管理的功能,我还没有看到任何发送自定义命令字符串到包管理器控制台(使用Entity Framework PowerShell API)的内容。 - Yepeekai
使用Nuget库,您应该能够实例化一个PackageManager并安装包。 - MichaC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接