以编程方式安装NuGet包
我正在尝试以编程方式安装一个简单的nuget包。我已经创建了一个包含Site.css文件的包。因此,它驻留在包的内容文件夹中 使用此代码以编程方式安装NuGet包,nuget,nuget-package,Nuget,Nuget Package,我正在尝试以编程方式安装一个简单的nuget包。我已经创建了一个包含Site.css文件的包。因此,它驻留在包的内容文件夹中 使用此代码 public void TestInstall(string packageID, string physicalPath) { var rep = PackageRepositoryFactory.Default.CreateRepository(new PackageSource("http://nuget.testserver.lan/nuget"
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目录(如果不存在,请创建)
不要忘记,您可以在Visual Package Manager控制台中安装软件包,因此它只是一个命令(
install Package markdownheloper
),不需要单击UI。不幸的是,direct PackageManager API没有那么灵活。但是你可以看看它在内部做了什么,然后改变它的行为。事实并非如此。核心API与VS没有任何联系,只是VS客户端有最丰富的实现。@dfowler也许我用词不好。我的意思是,一些功能(比如添加对项目的引用,以及任何操纵项目/解决方案的PS脚本)只能在VS中工作,或者至少,这是我的理解?