我正在尝试开发一个 Visual Studio 扩展来自动化我们的实体框架迁移过程的一部分。我检查以编程方式添加迁移,但在查看实体框架源代码后,在 powershell 脚本中完成了很多工作,所以我想在包管理器控制台(nuget)上获得一个挂钩并在那里发送命令并从控制台读取结果如果可能的话。
如何在 Visual Studio 扩展中以编程方式访问包管理器控制台?
例如,我想将以下命令发送到包管理器控制台。
add-migration migration01
我正在尝试开发一个 Visual Studio 扩展来自动化我们的实体框架迁移过程的一部分。我检查以编程方式添加迁移,但在查看实体框架源代码后,在 powershell 脚本中完成了很多工作,所以我想在包管理器控制台(nuget)上获得一个挂钩并在那里发送命令并从控制台读取结果如果可能的话。
如何在 Visual Studio 扩展中以编程方式访问包管理器控制台?
例如,我想将以下命令发送到包管理器控制台。
add-migration migration01
在包管理器控制台中运行脚本的最佳方法是将参数传递给它。
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);
有一个 Nuget 发行版可以作为 Nuget 使用,它可以轻松使用所有 Nuget 功能,只需获取以下http://nuget.codeplex.com/包并使用它。
它还有一个 PackageManager...
我想这样的东西可以安装一些东西:
new PackageManager(
PackageRepositoryFactory.Default.CreateRepository("source"),
"path").InstallPackage("packageId")