Nuget安装在visual studio 2015中

问题描述 投票:25回答:7

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

c# .net visual-studio-2013 visual-studio-2015 nuget
7个回答
17
投票

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

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

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

编辑29/5/2017

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

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

  1. 该软件包确实没有可见内容,因为它使用脚本等移动内容(就像我的情况一样),然后有必要创建一些虚拟内容作为变通方法。
  2. 在必须具有内容的包的规范中存在错误(如评论中的Evgeni Nabokov的情况),然后您必须更正规范以将内容放置到位。

对不起,我的英语不好。


11
投票

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

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

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


2
投票

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

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

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


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


1
投票

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

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

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


0
投票

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.