6

我有一个相当复杂且大型的项目,我想尝试将其打包为 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>

无论我尝试什么,我都会收到错误消息:

无效的程序集引用“utils.dll”。确保 lib 目录中存在名为“utils.dll”的文件。

我尝试了这个答案的建议,但无济于事。

是否可以避免物理布局目录,如NuGet 文档中所述,而是使用文件引用?

4

1 回答 1

4

问题出在元素的target=目录中。<file ...>它不能包含前导/,即应该包含相对路径。前导斜线不会更改包布局,但显然会混淆 NuGet 中的参考评估设备。上述规范中的正确行应该是

    <file src="Kigo\bin\Release\Utils.dll" target="lib/net40"/>

通配符也有效(这是我的初衷):

    <file src="Kigo\bin\Release\*.*" target="lib/net40"/>

使用通配符规范,a<reference=...>可以正确接受通过通配符扩展打包的任何二进制文件。

于 2015-01-13T23:03:11.230 回答