安装NuGet包编程
我试图以编程方式安装一个简单的NuGet包。我创建了一个包含Site.css文件的包。所以它驻留在包的内容文件夹中。安装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);
}
可以说,我提供包ID = 'Testpackage' 和physicalPath = 'C:\的Inetpub \测试' 它创建:
C:\的Inetpub \测试\ Testpackage
和文件夹包含:
用的site.css和Testpackage.0.1.nupkg
012的内容文件夹不太我想要做的,但那种:)
是否有可能改变它,以便:
我可以指定它应该放在包的缓存功能
让它无论放置驻留在内容文件夹到指定的路径?
如果包中包含的DLL在lib文件夹让他们走在bin目录(创建,如果不存在)
很多的NuGet的功能目前依赖的Visual Studio自动化,所以在VS之外很难获得所有相同的行为。人
地块已要求,将需要使用VS自动化功能的变化,所以我怀疑它可能的路线图,因为它是显著的工作,我不认为它会很快。
不要忘了你可以在Visual Package Manager控制台中安装软件包,因此它只有一个命令(Install-Package MarkdownHelper
),并且不需要单击UI。
实际上并非如此。 Core API与VS没有任何关系,只是VS客户端具有最丰富的实现。 – davidfowl 2011-05-11 15:01:04
@dfowler也许我措辞很糟糕。我的意思是,一些功能(如添加引用的项目,以及操作项目/解决方案的任何PS脚本)将只从VS.内工作或者至少,那是我的理解? – 2011-05-11 16:59:26
不幸的是,直接PackageManager API是不是灵活。但是你可以看看它在内部做了什么,并改变了行为。 – davidfowl 2011-05-07 02:15:18