Nuget 3 - Octopack - 错误的框架目标错误
Posted
技术标签:
【中文标题】Nuget 3 - Octopack - 错误的框架目标错误【英文标题】:Nuget 3 - Octopack - Wrong Framework Target error 【发布时间】:2015-12-08 16:43:04 【问题描述】:我很生气试图解决这个问题。我的环境:
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
但是当我尝试在第二个项目中安装包时,我得到了这个异常:
两者都针对相同的框架 (4.5)。 如果您从包中提取库并引用它,就没有什么奇怪的了。 如果您从 VS2013 添加包,它可以完美运行。无法安装软件包“PackagedLibrary 1.1.1”。你正试图 将此包安装到目标项目中 '.NETFramework,Version=v4.5',但包中不包含任何 与之兼容的程序集引用或内容文件 框架。如需更多信息,请联系包作者。
我注意到 Octopack 版本(从 v3 端点 https://api.nuget.org/v3/index.json 下载)具有 Nuget.exe v.2.8,而不是应有的 3.xxx。所以我尝试手动替换nuget.exe文件生成包,没有任何改动。
我错过了什么的任何线索?
提前致谢
【问题讨论】:
【参考方案1】:据我所知,使用 Octopack 会生成一个 NuGet 包 (.nupkg),它只能用于 OctopusDeploy。它不会生成可供 NuGet 在 Visual Studio 中使用的 NuGet 包。
虽然 Octopus Deploy 使用 .nupkg 文件,但 .nupkg 文件中的文件结构不同。为了使 .nupkg 可以安装到 .NET 4.5 项目中,它需要将程序集放在 lib\net45 目录中。如果您查看 .nupkg 内部,它很可能没有此目录,但可能会在 .nupkg 的根目录中包含程序集。
如果您想在 NuGet 中使用 .nupkg 文件,您应该考虑使用 NuGet.exe 来生成 .nupkg 文件。
原因可能与 Visual Studio 2013 一起使用是因为它将其视为解决方案级别的 NuGet 包,目前 Visual Studio 2015 不支持。
【讨论】:
其实我之前只在Octopus上使用过,但我认为这是避免脚本打包的好方法。我想有没有办法避免创建nuget包的脚本呢?谢谢 呃...花了这么多时间来解决这个问题以上是关于Nuget 3 - Octopack - 错误的框架目标错误的主要内容,如果未能解决你的问题,请参考以下文章
.Net 2.0 和 msbuild 2.0 的 Octopack
运行 OctoPack 以创建包含 DEBUG 程序集的 nuget 包
是否可以将 OctoPack 与新的 PackageReference NuGet 格式一起使用?