Nugets安装在visual studio 2015中

时间:2015-12-25 13:26:35

标签: c# .net visual-studio-2013 visual-studio-2015 nuget

我尝试在简单项目中在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?

7 个答案:

答案 0 :(得分:17)

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

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

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

编辑29/5/2017

我看到这个答案对其他人有用,这就是我要再详细说明的原因。

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

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

  2. 规范包含必须包含内容的错误(在评论中就像Evgeni Nabokov的情况一样),然后你必须纠正规范以便把事情放到位。

  3. 抱歉我的英语不好。

答案 1 :(得分:11)

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

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

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

答案 2 :(得分:2)

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

╔════════════════════════════╦═══════════════════════════════════════════════════════════════╗
║ .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的要求。看起来,一旦您将解决方案迁移到这些兼容性级别,“不兼容”或在每次更新后再次发现轮子将成为过去的记忆。

答案 3 :(得分:2)

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

为了避免此问题 - 在TeamCity中,BuildSteps ==> NuGet Pack ==>包装参数==>规范文件,您必须通过nuspec文件选择.csproj文件并勾选选项"首选项目文件到.nuspec"

像这样构建的软件包可以很好地导入,而不再有来自VS的投诉。

答案 4 :(得分:1)

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

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

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

答案 5 :(得分:0)

似乎正在创建一个单元测试项目"而不是"类库"解决了这个问题。我和#34;类库"没有运气,但删除该项目,从单元测试项目"中创建一个新项目。模板已安装 Microsoft.VisualStudio.QualityTools.UnitTestFramework 版本10.0.0.0。

答案 6 :(得分:0)

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