使用nuget更新程序包管理器控制台之外的项目文件

时间:2012-07-08 21:00:52

标签: powershell nuget

Nuget.exe仅支持在文件系统/配置级别管理包。 powershell命令用于命令更新.proj文件的魔力。

话虽如此,我需要能够使用Visual Studio(自动)之外的最新版NuGet包更新csproj文件。

基本上,我如何在自己的外部PowerShell脚本中使用Install-Package(或任何其他方法)?

更新

我希望能够在VS之外添加项目引用,原因如下。

我的公司有很多共享库,在某些情况下相互依赖。我正在使用TFS Nugetter从TFS构建和发布nuget包。我想确保开发人员无法对构建(包)进行排队,除非项目可以在所有较新版本上构建和运行。这可确保库的所有较新版本都可以与其依赖项的所有较新版本一起使用。如果构建失败,那么您需要更新VS中的nuget引用并修复编译器错误/单元测试。

我一直在查看NuGet源代码,我想我找到了一种简单的方法来重用NuGet源来修改VS(有点)之外的proj文件。

System.Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0", true);
var dte = (DTE)System.Activator.CreateInstance(t, true); 
dte.Solution.Open( 
    @"C:\Users\paul.knopf\Documents\Visual Studio 2010\Projects\SLNMemory\SLNMemory.sln");

基本上,打开一个内存版本的visual studio,运行nuget命令,然后保存。

在构建步骤中,在GetWorkspace之后,我想在内存中运行此vs来更新所有对最新版本的nuget引用。

你怎么看?它肯定会很慢,但我们将使用相同的代码库并拥有我们需要的所有功能。

1 个答案:

答案 0 :(得分:1)

如您所描述的那样自动化Visual Studio当然是一种可能性。

我看到的另一种方式是将SharpDevelop用于install NuGet packages outside of Visual Studio。修改了NuGet PowerShell cmdlet以接受解决方案,您可以从命令行自动执行安装,包括在NuGet包中使用PowerShell脚本。代码尚未更新,因此它的目标是旧版本的NuGet,但可以更新。这又类似于您的解决方案和相当重要的解决方案。