Zei*_*kki 87 .net c# visual-studio c#-7.0 visual-studio-2017
我已经安装了一周前发布的Visual Studio 2017社区,我开始探索C#7的新功能.
所以我创建了一个返回两个值的简单方法:
public class Program
{
public static void Main(string[] args)
{
(int sum, int count) a = ReturnTwoValues();
}
static (int sum, int count) ReturnTwoValues() => (1, 1);
}
Run Code Online (Sandbox Code Playgroud)
编译器生成错误:
错误CS8137无法定义使用元组的类或成员,因为无法找到编译器所需类型"System.Runtime.CompilerServices.TupleElementNamesAttribute".你错过了参考吗?
我试着用这个名字在框架中找到一个引用,但没有运气!
如果我们需要额外的东西来使用C#7.0功能,那么我们需要为每个项目做到这一点非常奇怪吗?
Zei*_*kki 127
我刚刚浏览了Roslyn上的这个页面,其中介绍了以下步骤:
System.ValueTuple
从NuGet 添加对包的引用(预发布)按照这些步骤,它现在正在工作.但是,对于我们开始的每一个项目,我们都需要这样做真的很奇怪!希望在我们达到官方发布时这是固定的!
aaa*_*bbb 46
我安装.Net 4.7 Framework后,我开始收到此错误,并将我的项目更改为目标.Net 4.7
ValueTuple现在包含在.Net 4.7中,因此您不必手动引用ValueTuple.
我必须做的就是纠正编译错误是从我的项目引用中删除对System.ValueTuple的引用.
mar*_*oss 11
更新到 .NET 4.7.2 后我也遇到了这个错误,并且能够通过使用以下命令重新安装 nuget 包来修复它:
Update-Package -Reinstall
Run Code Online (Sandbox Code Playgroud)
当我从 .NET 4.6.2 升级到 .NET 4.7.2 时,我也遇到了这个问题。不幸的是,我无法删除对包的引用,System.ValueTuple
因为我使用的另一个 NuGet 包依赖于它。
最后我找到了根本原因:mscorlib.dll
项目文件夹中存在一个 .NET 4.6.2 版本(发布操作的输出),并且 MSBuild 决定引用此程序集而不是官方 .NET 4.7.2 参考装配体位于C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2
.
由于System.ValueTuple是在.NET 4.7中引入的,MSBuild编译失败,因为它在.NET 4.6.2的引用程序集中找不到该类型。
归档时间: |
|
查看次数: |
17982 次 |
最近记录: |