Nuget包安装失败

时间:2016-11-09 18:20:37

标签: .net install nuget

我在我的本地Nuget Server上创建并安装了一些nuget包。他们工作正常。我可以安装它们没问题。 但是当我创建另一个包并将其放到服务器时,包安装总是失败并出现错误:

Could not install package ... You are trying to install this package into a project that targets '.NETFramework,Version=v4.5', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

项目完全相同:它使用相同的框架版本(4.5)。我创建了另一个具有相同设置的包,它按预期工作。 该项目没有引用任何需要其他框架的内容。事实上,它使用的所有程序集也在其他程序包中使用。

nuspec是相同的:与其他包中相同的目标位置。我试图包含其他框架版本,但没有帮助。

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

我检查了生成的nupkg中包装的内容。它有lib / net45中的dll。我没有发现与其他包有任何区别。

我完全糊涂了。为什么非常相似的项目的包产生不同的结果。

有没有办法找出导致错误的原因: 安装失败。回滚......

维克多

1 个答案:

答案 0 :(得分:0)

错误意味着&#34;这个项目是.NET 4.5和你试图安装的nuget包不包含.NET 4.5&#34;。看起来有些不对劲。首先让我们检查一下nuget包。

*.nuspec档案中的这一行:

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

表示&#34;从bin\Release复制所有内容并将其放入nuget包存档内的lib\net45目录中&#34;。它不会检查&#34; bin \ Release&#34;中的文件。实际上是针对.NET 4.5编译的。它不会检查&#34; bin \ Release&#34;中是否有任何内容。一点都不。

第1步:您需要签入包含您的nuget包代码的项目(而不是使用它的项目),您实际上是针对.NET 4.5构建的。例如,您可以检查*.csproj是否包含这样的行:

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>

如果可以,请运行清洁并制作新鲜的dll。确保你使用&#34;发布&#34;配置而不是&#34; Debug&#34;不小心。

第2步:在应该使用nuget包的项目中,检查步骤1中创建的dll是否确实正常。您可以手动绕过nuget添加对dll的引用(引用 - &gt;添加引用 - &gt;浏览并选择在步骤1中创建的dll)。如果它能够工作,你知道你的dll是好的,问题就在于 - nuget包装。

第3步:如果第1步和第2步确定无误,请检查您如何打包和发布您的nuget包并检查您的nuget Feed。没有关于您的特定环境的详细信息很难说,但有很多选择:

  • 也许你的nuget feed拒绝nuget publish命令?
  • 也许您推错版本号并使用不同的版本?
  • 也许你正在用已经存在的版本推送pkg并且Feed不会覆盖它。
  • 也许你的nuget feed正在搞乱pkg文件?