【发布时间】: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的文件在 nugetcontent目录中。我想禁用它,这可以使用并清空<files />标签,但仍添加我明确定义的其他文件。 -
当您从 csproj 构建 nuget 时,它会自动包含该项目构建中将包含的任何内容。所以可能这与 MSBuild 或其他东西一起记录,但这是我观察到的行为,以这种方式构建了很多包。如果您的内容文件仅用于测试,那么您可以在“发布”模式下将它们从构建中排除(或者您可以专门为您的包创建另一个构建配置),然后从发布(或自定义)构建创建包?
标签: nuget nuget-package nuspec