仅限 nuget 包内容文件
nuget pack content files only
我想创建一个 nuget 包(来自某个 c# 项目),但我不想嵌入生成的 dll,而只想嵌入一些静态文件。
我在我的 nuspec 文件末尾添加了一个标签,但 nuget pack 命令继续在包中嵌入 project.dll。
问题是我不想发布这个 dll。
有什么办法吗?
谢谢,
瑞吉斯
是的。您可以创建一个仅引用内容文件的 .nuspec 文件。
你必须使用nuget pack MyPackage.nuspec
不要打包 .csproj 文件,因为这会导致 NuGet 包含构建的程序集。
有关详细信息,请参阅 http://docs.nuget.org/create/nuspec 参考资料。
要将文件打包为内容,在 .nuspec 文档中列出文件时必须使用 target=content
。
要创建 'content only' nuget 包,您必须使用 <files>
节点列出文件。
<files>
节点必须是 <metadata>
节点的兄弟节点。
<file>
节点必须是 <files>
节点的子节点。
要将文件作为内容包含,请将 <file>
节点中的 target 属性设置为 'content'。
示例:
<files>
<file src="{filePath}" target="content"/>
</files>
如前所述,您必须随后打包 .nuspec 文件而不是 .csproj 文件:
nuget pack *.nuspec
我在这里找到了 target=content
技巧:
https://docs.microsoft.com/en-us/nuget/reference/nuspec#including-content-files
对于 contentFiles,我在 nuspec 文件中使用这种方式:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>DummyNuget</id>
<version>1.0.1-alpha</version>
<title>DummyNuget</title>
<authors>DummyNuget</authors>
<owners>DummyNuget</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>DummyNuget</description>
<releaseNotes></releaseNotes>
<copyright>2019</copyright>
<tags></tags>
<contentFiles>
<files include="**\*.*" buildAction="Content" copyToOutput="true" />
</contentFiles>
</metadata>
<files>
<file src="<path to files>\*.*" target="contentFiles\any\any" />
</files>
</package>
files 将本地文件放入 nuget 包中,然后将 contentFiles 放在元数据中,将项目中的所有文件作为内容复制到输出
我想创建一个 nuget 包(来自某个 c# 项目),但我不想嵌入生成的 dll,而只想嵌入一些静态文件。
我在我的 nuspec 文件末尾添加了一个标签,但 nuget pack 命令继续在包中嵌入 project.dll。 问题是我不想发布这个 dll。
有什么办法吗?
谢谢,
瑞吉斯
是的。您可以创建一个仅引用内容文件的 .nuspec 文件。
你必须使用nuget pack MyPackage.nuspec
不要打包 .csproj 文件,因为这会导致 NuGet 包含构建的程序集。
有关详细信息,请参阅 http://docs.nuget.org/create/nuspec 参考资料。
要将文件打包为内容,在 .nuspec 文档中列出文件时必须使用 target=content
。
要创建 'content only' nuget 包,您必须使用 <files>
节点列出文件。
<files>
节点必须是 <metadata>
节点的兄弟节点。
<file>
节点必须是 <files>
节点的子节点。
要将文件作为内容包含,请将 <file>
节点中的 target 属性设置为 'content'。
示例:
<files>
<file src="{filePath}" target="content"/>
</files>
如前所述,您必须随后打包 .nuspec 文件而不是 .csproj 文件:
nuget pack *.nuspec
我在这里找到了 target=content
技巧:
https://docs.microsoft.com/en-us/nuget/reference/nuspec#including-content-files
对于 contentFiles,我在 nuspec 文件中使用这种方式:
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>DummyNuget</id>
<version>1.0.1-alpha</version>
<title>DummyNuget</title>
<authors>DummyNuget</authors>
<owners>DummyNuget</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>DummyNuget</description>
<releaseNotes></releaseNotes>
<copyright>2019</copyright>
<tags></tags>
<contentFiles>
<files include="**\*.*" buildAction="Content" copyToOutput="true" />
</contentFiles>
</metadata>
<files>
<file src="<path to files>\*.*" target="contentFiles\any\any" />
</files>
</package>
files 将本地文件放入 nuget 包中,然后将 contentFiles 放在元数据中,将项目中的所有文件作为内容复制到输出