【问题标题】:How to add nuget package to project (not solution) with build如何使用构建将nuget包添加到项目(不是解决方案)
【发布时间】:2015-11-04 23:53:36
【问题描述】:

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

在 .sln 文件夹级别,我创建了一个 .nuget 文件夹并放置了 package.config。这有我在 P1 和 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>

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

谁能告诉我如何在构建过程中自动将所需的包添加到项目中。

【问题讨论】:

  • 您能解释一下为什么不想按预期使用 NuGet(即使用 Visual Studio UI 或 NuGet 命令行将包添加到项目中,而不是自己修改 .config 文件)?

标签: c# .net nuget nuget-package


【解决方案1】:

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

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

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

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


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

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 2016-10-13
    • 2016-02-28
    • 1970-01-01
    • 2011-09-21
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多