我尝试在简单项目中在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?
答案 0 :(得分:17)
时间过去了,但它发生在我身上,我发现它与框架版本无关。错误消息的重要文本是:“...但包不包含任何程序集引用或内容文件......”。
实际上,我的包没有Nuget的任何可见内容:它有一个带有第三方本机库的非常规文件夹和一个使用Xcopy命令添加post build事件的Install.ps1。
作为一个简单的转变,只需将一个虚拟文件放在包Content文件夹或lib中的任何其他虚拟内容,空文件节点(未尝试过)等等。
编辑29/5/2017
我看到这个答案对其他人有用,这就是我要再详细说明的原因。
正如我所说,问题是Nuget没有看到包中有任何内容,但可能有两个原因:
该软件包确实没有可见内容,因为它使用脚本等移动内容(就像我的情况一样),然后有必要创建一些虚拟内容作为解决方法。
规范包含必须包含内容的错误(在评论中就像Evgeni Nabokov的情况一样),然后你必须纠正规范以便把事情放到位。
抱歉我的英语不好。
答案 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工具都可以让你操作内容。