Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以编程方式安装NuGet包_Nuget_Nuget Package - Fatal编程技术网

以编程方式安装NuGet包

以编程方式安装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"

我正在尝试以编程方式安装一个简单的nuget包。我已经创建了一个包含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目录(如果不存在,请创建)


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

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


不要忘记,您可以在Visual Package Manager控制台中安装软件包,因此它只是一个命令(
install Package markdownheloper
),不需要单击UI。

不幸的是,direct PackageManager API没有那么灵活。但是你可以看看它在内部做了什么,然后改变它的行为。事实并非如此。核心API与VS没有任何联系,只是VS客户端有最丰富的实现。@dfowler也许我用词不好。我的意思是,一些功能(比如添加对项目的引用,以及任何操纵项目/解决方案的PS脚本)只能在VS中工作,或者至少,这是我的理解?