Nuget包安装失败

MrB*_*liz 13 .net nuget

尝试从我们新创建的私有Nuget Feed安装包时,出现以下错误.

无法安装包'GC.Timecode 1.0.0.3'.您正在尝试将此软件包安装到以".NETFramework,Version = v4.5.1"为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件.

Nuget包也针对4.5.1.(截图来自Nuget Package Explorer)

Nuget Package由Octopack通过On premises TFS创建,然后发布到私有Proget Server

在此输入图像描述

Nuspec文件看起来像这样

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>GC.Timecode</id>
<version>1.0.0.3</version>
<authors>user</authors>
<owners>user</owners>
<licenseUrl>http://example.com</licenseUrl>
<projectUrl>http://example.com</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The GC.Timecode deployment package, built on 25/01/2016</description>
<releaseNotes />
</metadata>
</package>
Run Code Online (Sandbox Code Playgroud)

包的内容

在此输入图像描述

这里发生了什么?

小智 19

Slippery Pete为我解决了这个问题.

我第一次尝试安装我的装配时得到了:

无法安装包'包名称'.您正在尝试将此>包安装到以".NETFramework,Version = v4.6.1"为目标的项目中,但>包不包含任何与该框架兼容的程序集引用或内容文件.有关更多信息,请联系包>作者.

确保我在Nuget包中的程序集在'lib \net45'文件夹中后,我仍然收到错误!

但是在转到Tools-> Options-> Nuget-> General并清除缓存后,问题就解决了.

  • 我有同样的问题。您还可以使用以下命令通过程序包管理器控制台清除Nuget缓存:nuget locals all -list (2认同)

Kri*_*ris 11

确保您的nuspec文件包含'lib/net45'目标

<package>
  <metadata>
    ...
  </metadata>
  <files>
    <file src="bin\Release\*.*" target="lib/net45" />
  </files>
</package>
Run Code Online (Sandbox Code Playgroud)


MrB*_*liz 8

问题是Octopack默认只复制现有的文件夹结构,而Nuget会将你的dll打包成lib文件夹.

对于懒惰,您可以使用此包来获取构建在每个构建上的nuget包

https://www.nuget.org/packages/CreateNewNuGetPackageFromProjectAfterEachBuild/

  • 我会,在2天的时候,SO会让我:) (2认同)

小智 8

这发生在我身上,我没有将解决方案发布到任何这些网站上,因此希望对其他人有所帮助。

我收到的消息是:

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

我有一个针对所有4.x版本构建的Nuget程序包,因此它没有特别指定4.6.1版本也没关系。我尝试将类库版本更改为4.0、4.5、4.5.2、4.6、4.6.1和4.6.2,但没有任何方法可以解决此问题。我还将DLL的多个版本添加到单独的/ lib / Net4(5,51,52,6,61,62)文件夹中的包中,并且错误仍然存​​在。

最终,我发现问题的原因是我创建的最初的私有Nuget程序包是一个“错误”程序包,并且该错误程序包已缓存到我的本地计算机上。

我解决了程序包问题,并将新程序包推送到我们的Nuget服务器(版本名称相同),但是Visual Studio中的Nuget并未下拉新程序包,而是引用了本地计算机上缓存的错误程序包。软件包管理器显示软件包已更新,并且已从我们的Nuget服务器正确显示了信息,但从未获取新软件包。它总是在以下位置检索缓存的包:

C:\ Users \您的用户帐户\ .Nuget \ packages \

只需删除本地用户帐户下有问题的软件包,软件包管理器便会从服务器中拉出新软件包。