Nugets安装在visual studio 2015中

本文关键字:2015 studio visual 安装 Nugets | 更新日期: 2023-09-27 18:28:12

我试图在Visual Studio 2015中的一个简单项目中安装nuget Microsoft.VisualStudio.QualityTools.UnitTestFramework,得到了以下消息:

未能安装程序包"Microsoft.VisualStudio.QualityTools.UnitTestFramework 10.0.30391.1"。您正试图将此程序包安装到以".NETFramework,Version=v4.5.2"为目标的项目中,但该程序包不包含任何与该框架兼容的程序集引用或内容文件。有关详细信息,请与程序包作者联系。

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

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

Nugets安装在visual studio 2015中

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

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

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

编辑29/5/2017

我看到这个答案对其他人很有用,这就是为什么我要再详细阐述一点。

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

  1. 这个包实际上没有可见的内容,因为它用脚本等移动内容(就像我的情况一样),然后有必要创建一些伪内容作为解决方法。

  2. 一个必须包含内容的包的规范中有一个错误(就像评论中叶夫根尼·纳博科夫的情况一样),然后你必须纠正规范才能把东西放到位。

抱歉我英语不好。

错误消息表明您的框架版本没有nuget版本。

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

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

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

为了避免这个问题-在TeamCity中,BuildSteps=>NuGet Pack=>Package parameters=>您必须选择.csproj文件而不是nuspec文件,并勾选选项"Prefer project files to.nuspec"

这样构建的包可以导入,并且不会有来自VS的更多抱怨。

当解决方案的.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标准,微软正在对所有.NET平台上具有一致API的要求进行编码。似乎一旦您将解决方案迁移到这些兼容级别,"不兼容"或在每次更新后再次发现轮子将成为过去的记忆。

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

最后,我通过制作另一个测试项目,从我的旧测试项目中复制cs文件等,然后通过NuGet安装UnitTestFramework来解决这个问题。它运行良好。

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

创建一个"单元测试项目"而不是"类库"似乎解决了这个问题。我遇到了"类库"的麻烦,但删除该项目并从"单元测试项目"模板中创建一个新项目变成了安装了Microsoft.VisualStudio.QualityTools.UnitTestFramework10.0.0.0版本。

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