【问题标题】:How to include a referenced assembly in a package?如何在包中包含引用的程序集?
【发布时间】:2014-04-28 12:46:42
【问题描述】:

我有一个项目 (A.csproj),它引用了一个不属于 .NET 框架的程序集 (B.DLL)。

使用nuget pack a.csproj 打包项目可以有效地构建包,但是在测试包时它不包含 B.DLL,显然它没有作为参考添加。

我尝试使用 nuget spec,但在生成的 nuspec 文件中找不到与该引用相关的任何内容。

我也尝试使用Create New NuGet Package From Project After Each Build 1.7.3 包,但没有帮助。

在 NuGet 包中包含和引用程序集需要哪些步骤?

【问题讨论】:

  • 需要在你的项目文件中使用nuget pack而不是创建一个nuspec文件吗?
  • @JonSkeet 不,没关系,欢迎任何方法。其实这两种方法我都试过了,结果一样。

标签: c# .net nuget assemblies


【解决方案1】:

如果您需要对 NuGet 包的布局和内容进行细粒度控制,那么您应该创建一个 nuspec 文件并使用它来创建包。然后您可以使用以下语法添加文件,例如:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
   <metadata schemaVersion="2">
     ...
   </metadata>
   <files>
     <file src="Foo.dll" target="lib\net45" />
     ...
   </files>
</package>

【讨论】:

  • 好的,但有一件事,它说“b.dll”找不到,除非我把它设为 src="bin\Release\b.dll"。这是引用它的正确方法吗(硬编码 bin\Release 文件夹)?
  • @Aybe 没有“正确”的答案,这取决于您的需求。对于我自己的项目(来自这个 sn-p 的来源),我在创建包时使用 MSBuild 将 Visual Studio 之外的所有内容构建到一个单一配置的平面目录中,因此我不需要路径中的任何目录 @ 987654323@.
  • 使用 nuget 令牌。通常它看起来像这样,例如
【解决方案2】:

您是否尝试过在您的 nuget pack 语句中使用 -IncludeReferencedProjects 属性?

【讨论】:

  • 这可能会更好地用作评论,因为它没有回答问题。
  • 我试图将其添加为评论,但它说我没有足够高的代表来执行此操作?我遇到了同样的问题,我想尝试在不制作 nuspec 文件的情况下完成此操作。我有同样的问题,我想为其创建一个 nuget 的程序集有两个其他依赖程序集。使用nuget pack myproject.csproj -IncludeReferencedProjects 作为我的命令也将这两个依赖程序集包含在我的nuget 包中。 pack 命令的选项可以在这里找到nuget pack commands
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
相关资源
最近更新 更多