【问题标题】:Only include wanted content files in NuGet package仅在 NuGet 包中包含所需的内容文件
【发布时间】:2018-02-15 10:20:06
【问题描述】:

我正在从一个 c# 类库项目构建一个 nuget 包。

类库本身有标记为build action=content的文件,我无法更改。

我不希望 nuget 包中包含这些内容文件。如果我使用的是空文件标签,则不包括这些内容文件。

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    ...
  </metadata>
  <files />
</package>

但是,如果我像这样将至少一个其他文件添加到我的包中

<?xml version="1.0"?>
<package >
  <metadata>
    <id>$id$</id>
    <version>$version$</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    ...
  </metadata>
  <files>
    <file src="source/path.dll" target="lib\net45\" />
  </files>
</package>

我的项目中标记为内容的每个文件也包含在我的包中。

有没有办法避免这种情况?

【问题讨论】:

  • 如果您真的无法更改文件的构建操作(为什么不,出于兴趣?),那么您可能必须在配置中手动定义整个 nuget 包,而不是构建它来自 csproj 文件。否则它将遵循项目的构建规则。
  • @ADyson why not, out of interest 内容文件只是通过设置主 exe 来确定要包含哪些文件并通过单元测试。软件包不需要它们。奇怪的是,我在官方文档中找不到任何关于内容文件首先包含的参考。
  • 您能发布您的完整 nuspec 吗?编辑 PII 数据 ofc。不清楚你在这里的意思。你说的内容是什么意思? NuGet 中的内容概念? $root/content/cs/net45/mycontent ?
  • @imps 我正在从一个 csproj 文件结合一个用于元数据、依赖项和其他文件的 nuspec 文件构建一个 nuget 包。请参阅 stackoverflow.com/a/14808085/98491 Visual Studio 中标记为 Content 的文件在 nuget content 目录中。我想禁用它,这可以使用并清空 &lt;files /&gt; 标签,但仍添加我明确定义的其他文件。
  • 当您从 csproj 构建 nuget 时,它会自动包含该项目构建中将包含的任何内容。所以可能这与 MSBuild 或其他东西一起记录,但这是我观察到的行为,以这种方式构建了很多包。如果您的内容文件仅用于测试,那么您可以在“发布”模式下将它们从构建中排除(或者您可以专门为您的包创建另一个构建配置),然后从发布(或自定义)构建创建包?

标签: nuget nuget-package nuspec


【解决方案1】:

将此放在.csproj 文件的末尾:

<ItemGroup>
  <Content Update="@(Content)" Pack="false" />
</ItemGroup>

这将使每个 "build action=content" 都被排除在 nuget 之外。
在 MsBuild 项目中,那些 "build action=content" 条目实际上是 &lt;Content&gt; Items - 您可以在旧的 .csproj 格式中看到它们。 (在新的 SDK 样式格式中,默认情况下,项目文件会根据文件扩展名自动包含;因此您可能不会看到 &lt;Content&gt; 条目。

上面的代码会更新每个 &lt;Content&gt; 条目 - 在到达该代码时已经存在(因此它应该在 .csproj 的末尾) - 从 nuget 包中排除

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    相关资源
    最近更新 更多