【问题标题】:Install NuGet package programmatically以编程方式安装 NuGet 包
【发布时间】:2011-05-06 10:18:40
【问题描述】:

我正在尝试以编程方式安装一个简单的 nuget-package。我创建了一个包含 Site.css 文件的包。所以它驻留在包的内容文件夹中。

使用此代码

public void TestInstall(string packageID, string physicalPath)
{
   var rep = PackageRepositoryFactory.Default.CreateRepository(new PackageSource("http://nuget.testserver.lan/nuget", "Default"));

   var packagemgr = new PackageManager(
                rep,
                new DefaultPackagePathResolver("http://nuget.testserver.lan/nuget"),
                    new PhysicalFileSystem(physicalPath)
                    );

   var package = rep.FindPackagesById(packageID).First();

   packagemgr.InstallPackage(package, false);
}

假设我提供了它创建的 packageID = 'Testpackage' 和 physicalPath = 'c:\inetpub\test':

c:\Inetpub\test\Testpackage

并且该文件夹包含:

包含 Site.css 和 Testpackage.0.1.nupkg 的内容文件夹

不完全是我想要做的,但有点:)

是否可以这样改:

  • 我可以为缓存功能指定它应该放置包的位置

  • 让它将内容文件夹中的任何内容放置到指定路径?

  • 如果软件包在 lib 文件夹中包含 dll,则将它们放入 bin 目录中(如果不存在则创建)

【问题讨论】:

  • 不幸的是,直接的 PackageManager API 不是那么灵活。但是你可以看看它在内部做了什么并改变行为。

标签: nuget nuget-package


【解决方案1】:

目前 NuGet 的许多功能都依赖于 Visual Studio 自动化,因此在 VS 之外很难获得所有相同的行为。

很多人都要求使用 VS 自动化需要更改的功能,所以我怀疑它可能在路线图上,因为这是一项重要的工作,我认为不会很快。

不要忘记您可以在 Visual Package Manager 控制台中安装包,因此它只是一个命令 (Install-Package MarkdownHelper),并且不需要单击 UI。

【讨论】:

  • 这实际上不是真的。 Core API 与 VS 无关,只是 VS 客户端拥有最丰富的实现。
  • @dfowler 也许我措辞不好。我的意思是某些功能(例如添加对项目的引用,以及任何操纵项目/解决方案的 PS 脚本)只能在 VS 中工作。或者至少,这是我的理解?
猜你喜欢
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 2011-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多