3

我很生气试图解决这个问题。我的环境:

  • VS2015
  • Nuget 扩展 3.3.0.167
  • Octopack 包 3.0.45。

当我在下面运行以下命令时,会正确生成包:

 v4.0.30319\msbuild PackagingTest.sln /t:Rebuild
/p:Configuration=Release /p:RunOctopack=true
/p:OctoPackPackageVersion=1.1.1/p:OctoPackPublishPAckageToFileShare=C:\Packages

但是当我尝试在第二个项目中安装包时,我得到了这个异常:

无法安装软件包“PackagedLibrary 1.1.1”。您正在尝试将此包安装到以“.NETFramework,Version=v4.5”为目标的项目中,但该包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请联系包作者。

  • 两者都针对相同的框架(4.5)。
  • 如果你从包中提取库并引用它,那里没有什么奇怪的。
  • 如果您从 VS2013 添加包,它可以完美运行。

我注意到 Octopack 版本(从 v3 端点https://api.nuget.org/v3/index.json下载)具有 Nuget.exe v.2.8,而不是应有的 3.xxx。所以我尝试手动替换 nuget.exe 文件来生成包,没有任何变化。

我错过了什么的任何线索?

提前致谢

4

1 回答 1

5

据我所知,使用 Octopack 会生成一个 NuGet 包 (.nupkg),它只能用于 OctopusDeploy。它不会生成可供 NuGet 在 Visual Studio 中使用的 NuGet 包。

虽然 Octopus Deploy 使用 .nupkg 文件,但 .nupkg 文件中的文件结构不同。为了使 .nupkg 可以安装到 .NET 4.5 项目中,它需要lib\net45目录中的程序集。如果您查看 .nupkg 内部,它很可能没有此目录,但可能仅在 .nupkg 的根目录中包含程序集。

如果您想将 .nupkg 文件与 NuGet 一起使用,您应该考虑使用 NuGet.exe 来分类 .nupkg 文件。

原因可能适用于 Visual Studio 2013,因为它将其视为解决方案级别的 NuGet 包,目前在 Visual Studio 2015 中不支持。

于 2015-12-08T19:40:42.917 回答