我想创建一个nuget包(来自某个c#项目),但我不想嵌入生成的dll,而只是一些静态文件。
我在我的nuspec文件的末尾添加了一个标记,但是nuget pack命令继续将project.dll嵌入到包中。 问题是我不希望这个dll被发布。
有没有办法做到这一点?
谢谢,
雷吉斯
答案 0 :(得分:4)
是。您可以创建仅引用内容文件的 .nuspec 文件。
您必须使用nuget pack MyPackage.nuspec
不要打包 .csproj 文件,因为这会导致NuGet包含构建的程序集。
有关详细信息,请参阅http://docs.nuget.org/create/nuspec参考。
答案 1 :(得分:1)
要将文件打包为内容,在.nuspec文档中列出文件时,必须使用target=content
。
要创建“仅内容”的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
答案 2 :(得分:0)
对于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>
将本地文件放入nuget包中的文件,然后将元文件中的contentFiles放入项目中的所有文件作为内容副本输出