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?
时间已经过去了,但它正在发生在我身上,我发现它与框架版本无关。错误消息的重要文本是:"…但包不包含任何程序集引用或内容文件…"。
事实上,我的包没有任何Nuget的可见内容:它有一个非传统的文件夹,其中包含第三方本地库和一个Install.ps1,它使用Xcopy命令添加了一个构建后事件。
作为一个简单的周转,只需将一个伪文件放在包内容文件夹中,或将任何其他伪内容放在lib、空文件节点(未尝试)等中。
编辑29/5/2017
我看到这个答案对其他人很有用,这就是为什么我要再详细阐述一点。
正如我所说,问题是Nuget看不到包中有任何内容,但可能有两个原因:
-
这个包实际上没有可见的内容,因为它用脚本等移动内容(就像我的情况一样),然后有必要创建一些伪内容作为解决方法。
-
一个必须包含内容的包的规范中有一个错误(就像评论中叶夫根尼·纳博科夫的情况一样),然后你必须纠正规范才能把东西放到位。
抱歉我英语不好。
错误消息表明您的框架版本没有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工具都可以用来操作内容。