尝试从我们新创建的私有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>
包裹内容
这里发生了什么?
答案 0 :(得分:14)
Slippery Pete为我解决了这个问题。
我第一次尝试安装我的装配时,我得到了:
无法安装包'包名称'。您正尝试将此&gt;软件包安装到以“.NETFramework,Version = v4.6.1”为目标的项目中,但&gt;软件包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请与包&gt;作者联系。
确保Nuget包中的Assembly在'lib \ net45'文件夹中后,我仍然收到错误!
然而,在转到Tools-&gt; Options-&gt; Nuget-&gt; General并清除缓存后,问题就解决了。
答案 1 :(得分:8)
确保您的nuspec文件包含&#39; lib / net45&#39;目标
<package>
<metadata>
...
</metadata>
<files>
<file src="bin\Release\*.*" target="lib/net45" />
</files>
</package>
答案 2 :(得分:7)
问题是Octopack默认只复制现有的文件夹结构,而Nuget会将你的dll打包成lib文件夹。
对于懒惰,您可以使用此包来获取构建在每个构建
上的nuget包https://www.nuget.org/packages/CreateNewNuGetPackageFromProjectAfterEachBuild/
答案 3 :(得分:4)
这发生在我身上,我没有发现我的解决方案发布到任何这些网站,所以希望这有助于其他人。
我得到的信息是:
无法安装包'包名称'。您正在尝试安装 这个包成了一个目标项目 '.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,但没有解决此问题。我还在个人/ lib / Net4(5,51,52,6,61,62)文件夹中添加了多个版本的DLL,错误仍然存在。
最后,我发现我的问题的原因是我创建的初始私有Nuget包是一个“坏”包而且坏包被缓存到我的本地机器。
我修复了包问题并将新包推送到我们的Nuget服务器(保留版本名称相同),但Visual Studio中的Nuget没有拉下新包,而是引用了我本地计算机上缓存的坏包在。软件包管理器显示软件包已更新并从我们的Nuget服务器正确显示信息,但它从未提取新软件包。它始终在以下位置检索缓存包:
C:\用户\ your_user_account \ .Nuget \包\
只需在本地用户帐户下删除相关软件包,强制软件包管理器从服务器下载新软件包。
答案 4 :(得分:1)
如果您使用的是nuspec,请确保在元数据中将所有已安装的软件包都标记为“依赖项”。
<dependencies>
<dependency id="MyIncludedPackage" version="1.13.0" />
</dependencies>
</metadata>
添加所有软件包可以为我解决此问题。
答案 5 :(得分:1)
我也收到以下消息。
无法安装软件包“软件包名称”。您正在尝试安装 将该软件包打包成一个针对目标的项目 '.NETFramework,Version = v4.6.1',但该软件包不包含任何 程序集引用或与此兼容的内容文件 框架。有关更多信息,请与程序包作者联系。
就我而言,changing the package management format from packages.config to PackageReference解决了这个问题。
答案 6 :(得分:1)
我刚尝试过的另一种可能性是本地Nuget工具可能太旧了。
我正在尝试安装{.3}},这是一个.Net标准2.0项目。我的本地项目是 兼容的.NET Framework 4.7.2。但是我得到了问题中引用的错误。
问题是我的VS2015安装的Nuget不是最新的。尽管在[工具]> [扩展] 下没有显示任何可用的更新,但实际上https://github.com/alastairtree/LazyCache上有更新得多的Nuget(我相信是3.6倍对3.4倍)。
我安装了该软件,问题已解决。显然,旧的Nuget无法理解什么是.NET Standard。
答案 7 :(得分:0)
我认为解决方案可能因情况而异,但就我而言,NuGet程序包是在“类库.NET Core 3.1”中构建/编译的,而使用此程序包的项目则属于.NET Framework。我只是将项目类型更改为.NET Core 3.1,并再次添加了NuGet包,它对我有用。