尝试从我们新创建的私有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并清除缓存后,问题就解决了.
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)
问题是Octopack默认只复制现有的文件夹结构,而Nuget会将你的dll打包成lib文件夹.
对于懒惰,您可以使用此包来获取构建在每个构建上的nuget包
https://www.nuget.org/packages/CreateNewNuGetPackageFromProjectAfterEachBuild/
小智 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 \
只需删除本地用户帐户下有问题的软件包,软件包管理器便会从服务器中拉出新软件包。