我有一个相当复杂和大型的项目,我想尝试打包作为内部使用的nuget包.我想避免复制文件,因为有很多(150 MB +二进制文件).相反,我试图使用该<file ...>元素将包蓝图文件指向文件.这是我可以重现我的问题的文件的简化版本:
<?xml version="1.0"?>
<package >
<metadata>
<id>AgentCore</id>
<version>6.1.0</version>
<authors>kkm</authors>
<description>AgentCore</description>
<references>
<reference file="Utils.dll" />
</references>
</metadata>
<files>
<file src="Kigo\bin\Release\Utils.dll" target="/lib/net40"/>
</files>
</package>
Run Code Online (Sandbox Code Playgroud)
无论我尝试什么,我都会收到错误:
无效的程序集引用'utils.dll'.确保lib目录中存在名为"utils.dll"的文件.
我尝试了这个答案的建议,但无济于事.
是否可以避免在物理上布局目录,如NuGet文档中所述,并使用文件引用代替?
问题出在元素target=的目录中<file ...>。它不能包含前导/,即应该包含相对路径。前导斜杠不会更改包布局,但显然会混淆 NuGet 中的参考评估设备。上述规范中正确的一行应该是
<file src="Kigo\bin\Release\Utils.dll" target="lib/net40"/>
Run Code Online (Sandbox Code Playgroud)
通配符也有效(这就是我的初衷):
<file src="Kigo\bin\Release\*.*" target="lib/net40"/>
Run Code Online (Sandbox Code Playgroud)
使用通配符规范,a<reference=...>可以正确接受通过通配符扩展方式打包的任何二进制文件。
| 归档时间: |
|
| 查看次数: |
1551 次 |
| 最近记录: |