如何使用build将nuget包添加到项目(不是解决方案)

时间:2015-08-12 11:35:59

标签: c# .net nuget nuget-package

我有一个C#解决方案,它有两个项目(P1和P2)。 P1& P2有一套nuget包。在TFS中,我创建了一个文件夹(比如Lib文件夹),我放了所有实际的.nuget文件。

在.sln文件夹级别,我创建了一个.nuget文件夹&把package.config。这里有我在P1& amp;中使用的包裹清单。 P2项目。以下是package.config文件的内容。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="angularjs" version="1.4.3" targetFramework="net451" />
  <package id="AngularJS.Core" version="1.4.3" targetFramework="net451" />
  <package id="AngularJS.Route" version="1.4.3" targetFramework="net451" />
  <package id="bootstrap" version="3.3.5" targetFramework="net451" />
  <package id="jQuery" version="1.9.1" targetFramework="net451" />
</packages>

现在,当我构建解决方案时,它会创建一个&#34;包&#34; .sln文件所在的同一目录下的文件夹&amp;然后它解压缩所有的nuget包。我想将这些nuget包添加到P1或P2。我不想手动为每个项目添加包。目前只是解包,但没有添加到项目中。

任何人都可以告诉我如何在构建期间自动将所需的包添加到项目中。

1 个答案:

答案 0 :(得分:0)

你的方法看起来很可疑......就我个人而言,我会建议你以一种常见的方式添加你的包裹!

但是,如果你坚持......我有一个有点丑陋的想法如何实现它。
在构建之前,您必须更改.csproj文件,以便将这些包包含到构建中。所以你必须在csproj文件中的<Reference Include="EntityFramework.SqlServer"> <HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath></Reference>节点内添加像<ItemGroup>这样的部分。
您可以编写实用程序(足够简单)来为您完成它并在构建之前执行它(解决方案 - &gt;属性 - &gt;构建事件 - &gt;预构建事件)

此外(最有可能)您将需要一些配置文件用于此新实用程序(实用程序必须知道哪些包需要某些项目)。它将是例如具有以下内容的文本文件

<ProjectName>
  <Package Id = 2>
  <Package Id = 24>
</ProjectName>


您需要解析此配置文件并使用适当的引用修改每个csproj文件。