nuget 包中 exe 文件的位置和 nuspec 中匹配的文件标记
Posted
技术标签:
【中文标题】nuget 包中 exe 文件的位置和 nuspec 中匹配的文件标记【英文标题】:location of exe file in nuget package and matching file tag in nuspec 【发布时间】:2022-01-03 22:11:34 【问题描述】:目前我正在手动创建一个nuget目录结构,nuspec并使用命令行(nuget.exe)打包它。
我的问题是一个 exe 文件,该文件旨在添加到引用它的项目的输出目录中。 exe是插件加载器,引用项目是插件。当插件定义为启动项目时,应该启动exe。
我只是无法将 nuget 中的 exe 放入输出目录中。
exe放在contentFiles/any/net5.0/the.exe下
nuspec 包含以下标签
<contentFiles>
<files include="any/net5.0/the.exe" buildAction="None" copyToOutput="true" />
</contentFiles>
如果我将 BuildAction 定义为 Content,编译器会抱怨它是二进制文件而不是文本文件 (CS2015)
知道什么会起作用吗?
【问题讨论】:
【参考方案1】:对于那些偶然发现需要通过 nuget 包打包和分发 .exe(不是工具)的人。
nuget 中的结构需要是:
the.dll
需要在 lib/net5.0
中(或等效项,具体取决于您的代码)
以下文件需要放在content
和contentFiles/any/any
目录下
the.exe
the.pdb
the.xml
the.runtimeconfig.json
(不确定,但没有它,exe 无法启动)
在生成的 nuget 中,nuspec 看起来像:
<metadata>
<contentFiles>
<files include="any/any/the.exe" buildAction="None" copyToOutput="true" />
<files include="any/any/the.pdb" buildAction="None" copyToOutput="true" />
<files include="any/any/the.xml" buildAction="None" copyToOutput="true" />
<files include="any/any/the.runtimeconfig.json" buildAction="None" copyToOutput="true" />
</contentFiles>
</metadata>
内容文件将显示在项目根目录下的 Visual Studio 中(dll 除外)。
可以启动分布式exe,如this question所示。
【讨论】:
以上是关于nuget 包中 exe 文件的位置和 nuspec 中匹配的文件标记的主要内容,如果未能解决你的问题,请参考以下文章