Nugets安装在visual studio 2015中

我尝试在简单的项目中在Visual Studio 2015中安装nuget Microsoft.VisualStudio.QualityTools.UnitTestFramework并获得此消息:

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

但是,当我尝试在Visual Studio 2013中在同一个项目中安装此软件包时,这是有效的。

如何在Visual Studio 2015中安装此nuget?

时间已过,但它发生在我身上,我发现它与框架版本无关。 错误消息的重要文本是:“…但包不包含任何程序集引用或内容文件……”。

实际上,我的包没有Nuget的任何可见内容:它有一个非常规文件夹,包含第三方本机库和Install.ps1,它使用Xcopy命令添加后期构建事件。

作为一个简单的转变,只需将一个虚拟文件放在包Content文件夹或lib中的任何其他虚拟内容,空文件节点(未尝试过)等。

编辑29/5/2017

我看到这个答案对其他人有用,这就是为什么我要再详细说明一下。

正如我所说,问题是Nuget没有看到包中有任何内容,但它可能有两个原因:

  1. 该软件包确实没有可见内容,因为它使用脚本等移动内容(就像我的情况一样),然后有必要创建一些虚拟内容作为变通方法。

  2. 在必须具有内容的包的规范中存在错误(如评论中的Evgeni Nabokov的情况),然后您必须更正规范以将内容放在适当的位置。

对不起,我的英语不好。

错误消息告诉您框架版本没有nuget版本。

在VS2013中,您可能在4.5.0或4.0.0版本的.Net框架中创建项目。

您是否尝试将项目的.Net版本更改为4.5.2?

在TeamCity中构建我的nuget包时,我遇到了这个问题,在本地工件中发布它们,然后尝试在其他项目中使用这些包。

为了避免这个问题 – 在TeamCity,BuildSteps ==> NuGet Pack ==>包参数==>规范文件中你必须通过nuspec文件选择.csproj文件并勾选选项“首选项目文件到.nuspec”

像这样构建的软件包可以很好地导入,不再需要VS的投诉。

我得到了这个并没有任何意义,因为我已经在框架4.6项目中使用它没有任何问题,并且错误告诉我它不适用于我知道不真实的框架4.6。

最后,我通过制作另一个测试项目,从我的旧测试项目中复制cs文件等,然后通过NuGet安装UnitTestFramework来解决它。 它工作正常。

所以有些事情发生,只有微软可以解决,我猜,但重新开始似乎解决它。

当解决方案的.NET标准和相应的NuGet包不匹配时,可能会发生这种情况。 这是这个链接的表格:

 ╔════════════════════════════╦═══════════════════════════════════════════════════════════════╗ ║ .NET Platform ║ .NET Standard ║ ╠════════════════════════════╬═══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╦═══════╣ ║ ║ 1.0 ║ 1.1 ║ 1.2 ║ 1.3 ║ 1.4 ║ 1.5 ║ 1.6 ║ 2.0 ║ ╠════════════════════════════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╬═══════╣ ║ .NET Core ║ → ║ → ║ → ║ → ║ → ║ → ║ 1.0 ║ vNext ║ ║ .NET Framework ║ → ║ 4.5 ║ 4.5.1 ║ 4.6 ║ 4.6.1 ║ 4.6.2 ║ vNext ║ 4.6.1 ║ ║ Xamarin.iOS ║ → ║ → ║ → ║ → ║ → ║ → ║ → ║ vNext ║ ║ Xamarin.Android ║ → ║ → ║ → ║ → ║ → ║ → ║ → ║ vNext ║ ║ Universal Windows Platform ║ → ║ → ║ → ║ → ║ 10.0 ║ → ║ → ║ vNext ║ ║ Windows ║ → ║ 8.0 ║ 8.1 ║ ║ ║ ║ ║ ║ ║ Windows Phone ║ → ║ → ║ 8.1 ║ ║ ║ ║ ║ ║ ║ Windows Phone Silverlight ║ 8.0 ║ ║ ║ ║ ║ ║ ║ ║ ╚════════════════════════════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╩═══════╝ 

您必须匹配框架和.NET标准版本。 我更喜欢.NET标准1.4和.NET Framework 4.6.1。 通过创建.NET标准,Microsoft正在编写在所有.NET平台上拥有一致API的要求。 看起来,一旦您将解决方案迁移到这些级别的兼容性,“不兼容”或在每次更新后再次发现轮子将成为过去的记忆。

似乎创建“unit testing项目”而不是“类库”解决了这个问题。 我没有运气地使用“类库”,但删除了该项目,从“unit testing项目”模板创建了一个新项目,安装了Microsoft.VisualStudio.QualityTools.UnitTestFramework版本10.0.0.0。

我发现DynamicInterop.0.8.1.nupkg在文件夹’lib \ netstandard1.2’中有dll文件。 我刚刚将文件夹名称更改为lib \ net40,并且软件包安装正常(我使用的是VS2013)。 另外:.nupkg只是一个.zip文件,因此任何zip工具都可以让你操作内容。