NuGet包无法为位于lib目录内的DLL添加项目引用

18

我想尝试打包一个引用了C++ DLL的.NET DLL。nuspec文件如下所示:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>MyPackage</id>
    <version>1.0.0</version>
    <authors>some author</authors>
    <owners>some owner</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>.NET Wrapper for rebuilt 64-bit version of MyPackage</description>
    <copyright>Copyright 2014</copyright>
  </metadata>
  <files>
    <file src="x64\MyPackage64.dll" target="content" />
    <file src="MyPackageNET.dll" target="lib" />
  </files>
</package>

当我检查生成的nupkg文件时,内部文件结构看起来是正确的。C++ DLL位于content中,而.NET DLL位于lib中。

当我将nupkg安装到一个项目中时,内容DLL被添加到项目根目录中,而lib DLL被添加到解决方案packages目录中。

然而,项目中没有添加引用。我被迫手动添加引用。我尝试添加以下节点到元数据,但无效:

<references>
  <reference file="MyPackageNET.dll" />
</references>

我做错了什么吗?我已经从各种 .csproj 文件中生成了其他 nuspec 和 nupkg 文件,它们可以正确地添加到安装了它们的项目中。是我错过了关于单个 DLL 打包的某些内容,导致无法在项目中添加引用吗?

另外,如果我无法自动添加引用,是否有人可以指导我查找任何资源,以解释 $project.Object.Reference.Add 方法的语法,或者帮助我以编程方式向我的项目添加 DLL 引用?


你关于在元数据中添加参考部分是正确的,它应该在那里。 - nikolaia
我曾经遇到过同样的问题。我运行了update-package -reinstall "PackageName" -projectname "ProjectName",然后它就添加了引用。不知道为什么在初始安装时没有起作用。 - Triynko
1个回答

2

我遇到了同样的问题,还出现了无法卸载软件包的症状。我按照Can't uninstall/reinstall NuGet package的指导方法,将packages.config文件添加到项目中。由于我的项目中没有这个文件,所以我不得不从解决方案文件夹中复制该文件。这样做可以纠正这两个症状。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接