powershell - 使用nuget在Package Manager控制台之外更新项目文件

标签 powershell nuget

Nuget.exe仅支持在文件系统/配置级别管理程序包。 powershell命令命令使用魔术来更新.proj文件。

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

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

更新:

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

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

我一直在看NuGet源,我想我找到了一种简单的方法来重用NuGet源来修改VS(kinda)之外的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之后,我想运行此内存,而不是将所有nuget引用更新为最新版本。

你怎么看?这肯定会很慢,但是我们将在相同的代码库上,并且拥有我们需要的所有功能。

最佳答案

您所描述的自动执行Visual Studio当然是可能的。

我查看的另一种方法是使用SharpDevelop到install NuGet packages outside of Visual Studio。 NuGet PowerShell cmdlet已修改为接受解决方案,您可以从命令行自动安装,包括在NuGet软件包中使用PowerShell脚本。该代码尚未更新,因此它针对的是NuGet的旧版本,但可以更新。同样,这类似于您的解决方案和相当重量级的解决方案。

关于powershell - 使用nuget在Package Manager控制台之外更新项目文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11386672/

相关文章:

windows - 在所有子目录中调用 git init 的 Powershell 脚本

PowerShell cmdlet 显示属性,但无法通过 'select' 显示

nuget - 在 nuget 还原包中构建 C# 项目失败 Microsoft.ApplicationInsights

c# - 使用 TeamCity 构建解决方案的问题(可能是 nuget 问题)

string - 将 PowerShell 对象转换为字符串

如果匹配,powershell 比较 2 个数组输出

Powershell New-NfsShare 无效的命名空间

c# - Json.NET 初始化抛出 System.TypeLoadException

sdk - Microsoft.AspNetCore.App 2.1.1升级 "Blocked by project"

visual-studio - 如何修复 ChakraCore NuGet 包错误?