Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# valuetuple不';我的4.7.2项目之一没有工作_C#_.net_Valuetuple - Fatal编程技术网

C# valuetuple不';我的4.7.2项目之一没有工作

C# valuetuple不';我的4.7.2项目之一没有工作,c#,.net,valuetuple,C#,.net,Valuetuple,我在解决方案中有多个项目,都以4.7.2为目标。然后,我在lib项目中添加了一个返回valueTuple的方法。多个项目调用此方法,除一个项目外,所有项目都可以正常(编译)。此项目生成编译器错误 Error CS1061 ValueTuple<IEnumerable<User>, Dictionary<string, string>, Dictionary<string, string>>' does not contain a defini

我在解决方案中有多个项目,都以4.7.2为目标。然后,我在lib项目中添加了一个返回valueTuple的方法。多个项目调用此方法,除一个项目外,所有项目都可以正常(编译)。此项目生成编译器错误

Error   CS1061  ValueTuple<IEnumerable<User>, Dictionary<string, string>, Dictionary<string, string>>' does not contain a definition for 'CreatedUsers' and no extension method 'CreatedUsers' accepting a first argument of type 'ValueTuple<IEnumerable<User>, Dictionary<string, string>, Dictionary<string, string>>' could be found (are you missing a using directive or an assembly reference?)
导致错误的行:

var createUserResult = await CreateNewUsers(param1, param2);
var created = createUserResult.CreatedUsers; //error

就是这样,编译器抱怨在返回的元组中找不到项。我在这里列出了编译器错误,它抱怨valuetuple中的第一项“CreatedUsers”。实际上,其他valuetuple项中的每一项都有一个编译器错误,“ErrorMsgsA”,ErrorMsgsB。请记住,我的其他项目在这个valuetuple中引用了ITME,它们都很好,没有错误。

您的方法签名在声明valuetuple时有语法错误。因为在泛型类型声明(如
Task
)中不能有ValueTuple属性名初始化。ValueTuple中所有声明的属性名称必须具有具体类型

将您的方法签名更改为:

public static async Task<(IEnumerable<T1> CreatedUsers, Dictionary<string, string> ErrorMsgsA, Dictionary<string, string> ErrorMsgsB)> CreateNewUsers(string param1, dtotype param2)

然后您可以编译代码。

您的方法签名在声明ValueTuple时出现语法错误。因为在泛型类型声明(如
Task
)中不能有ValueTuple属性名初始化。ValueTuple中所有声明的属性名称必须具有具体类型

将您的方法签名更改为:

public static async Task<(IEnumerable<T1> CreatedUsers, Dictionary<string, string> ErrorMsgsA, Dictionary<string, string> ErrorMsgsB)> CreateNewUsers(string param1, dtotype param2)

然后你就可以编译你的代码了。

好吧,我找到了原因

问题项目正在使用旧的编译器

我不得不删除两个包,这两个包已经存在多年了,很可能是我们购买的源代码。这些年来,我们一直在使用由如此古老的编译器编译的软件,这让我汗流浃背,但事实就是这样:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 Microsoft.Net.Compilers.1.0.0


现在问题解决了

好吧,我找到原因了

问题项目正在使用旧的编译器

我不得不删除两个包,这两个包已经存在多年了,很可能是我们购买的源代码。这些年来,我们一直在使用由如此古老的编译器编译的软件,这让我汗流浃背,但事实就是这样:

Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.0 Microsoft.Net.Compilers.1.0.0


现在问题解决了

元组没有属性,它们有命名值。错误与值的名称无关,而是与未声明的类型参数
T
有关。T1是一个具体类型,而不是泛型类型。我只是用T1替换了实际的类名称元组,它们没有属性,而是有命名值。错误与值的名称无关,而是与未声明的类型参数
T
有关。T1是一个具体类型,而不是泛型类型。我只是用T1替换了实际的类名,在什么代码中报告了这个错误?这是完整正确的错误消息吗?当我发布问题时,我更新了err msg,试图隐藏类名,这导致了一些混乱,err msg should be Error CS1061'ValueTuple'不包含'CreatedUsers'的定义,并且找不到接受'ValueTuple'类型的第一个参数的扩展方法'CreatedUsers'(是否缺少using指令或程序集引用?)代码行错误:“var created=createUserResult.CreatedUsers;”我更新了原来的帖子,以减少混乱再次检查你的代码。您确定没有创建
var=createUserResult.CreatedUsers()?不,我不知道。它是var created=createUserResult.CreatedUsersIn报告此错误的代码是什么?这是完整正确的错误消息吗?当我发布问题时,我更新了err msg,试图隐藏类名,这导致了一些混乱,err msg should be Error CS1061'ValueTuple'不包含'CreatedUsers'的定义,并且找不到接受'ValueTuple'类型的第一个参数的扩展方法'CreatedUsers'(是否缺少using指令或程序集引用?)代码行错误:“var created=createUserResult.CreatedUsers;”我更新了原来的帖子,以减少混乱再次检查你的代码。您确定没有创建
var=createUserResult.CreatedUsers()?不,我不知道。它是var created=createUserResult.CreatedUsers
public static async Task<ValueTuple<IEnumerable<T1>, Dictionary<string, string>, Dictionary<string, string>> CreateNewUsers(string param1, dtotype param2)
public static async Task<(IEnumerable<Object> CreatedUsers, Dictionary<string, string> ErrorMsgsA, Dictionary<string, string> ErrorMsgsB)> CreateNewUsers(string param1, dtotype param2)