程序集不在 lib 子文件夹中的 NuGet 参考规范
NuGet reference specification with an assembly not in lib subfolder
我有一个相当复杂的大型项目,我想尝试将其打包为 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>
无论我尝试什么,我都会收到错误消息:
Invalid assembly reference 'utils.dll'. Ensure that a file named 'utils.dll' exists in the lib directory.
我尝试了 this answer 的建议,但无济于事。
是否可以避免物理布局目录,如 NuGet documentation 中所述,而是使用文件引用?
问题出在 <file ...>
元素的 target=
目录中。它不能包含前导 /
,i。 e.应该包含一个相对路径。前导斜杠不会更改包布局,但显然会混淆 NuGet 中的参考评估工具。上述规范中正确的一行应该是
<file src="Kigo\bin\Release\Utils.dll" target="lib/net40"/>
通配符也可以(这是我的初衷):
<file src="Kigo\bin\Release\*.*" target="lib/net40"/>
使用通配符规范,<reference=...>
可以正确接受任何通过通配符扩展打包的二进制文件。
我有一个相当复杂的大型项目,我想尝试将其打包为 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>
无论我尝试什么,我都会收到错误消息:
Invalid assembly reference 'utils.dll'. Ensure that a file named 'utils.dll' exists in the lib directory.
我尝试了 this answer 的建议,但无济于事。
是否可以避免物理布局目录,如 NuGet documentation 中所述,而是使用文件引用?
问题出在 <file ...>
元素的 target=
目录中。它不能包含前导 /
,i。 e.应该包含一个相对路径。前导斜杠不会更改包布局,但显然会混淆 NuGet 中的参考评估工具。上述规范中正确的一行应该是
<file src="Kigo\bin\Release\Utils.dll" target="lib/net40"/>
通配符也可以(这是我的初衷):
<file src="Kigo\bin\Release\*.*" target="lib/net40"/>
使用通配符规范,<reference=...>
可以正确接受任何通过通配符扩展打包的二进制文件。