[英]Unable to cast object of type 'Microsoft.OData.Edm.Csdl.CsdlSemantics.UnresolvedType' to type 'Microsoft.OData.Edm.IEdmCollectionType'
在Visual Studio 2013中,我使用Nuget中的OData客户端代码生成器来使用OData V4端点。 出乎意料的是,本周t4模板给出了错误:无法将类型为“Microsoft.OData.Edm.Csdl.CsdlSemantics.UnresolvedType”的对象强制转换为“Microsoft.OData.Edm.IEdmCollectionType”。
我正在使用7个OData端点,并且只有其中一个在后端需要重新保存* .tt文件的更新。 保存后出现错误并将输出* .cs文件留空。 然后,我尝试在OData端点保存一个没有模型更改的* .tt文件,以查看它的行为方式。 思考过程可能是端点模型的变化可能与客户端代码生成器不兼容。 不幸的是,一个失败并产生了一个空白的* .cs文件以及相同的错误。
幸运的是,所有内容都使用git进行版本控制,我能够回滚文件以保持项目正常运行。
将此放在此处以防其他任何人升级他们的OData客户端代码生成器并感到沮丧。
问题原来是从以下版本升级:OData Client T4 Template ver。 2.2.0到OData客户端T4模板版本。 2.4.0
在版本之间添加了一些新项目,使您的旧* .TTInclude文件无效。
解决问题的步骤
上述步骤应该可以解决问题。
我注意到其中一个变化的一些变化。
在ttinclude中添加了一个新的命名空间
<#@ Import Namespace="Microsoft.OData.Edm.Vocabularies.Community.V1" #>
添加了一个新的DeclaredValueTerm:
tmp.FindDeclaredValueTerm(AlternateKeysVocabularyConstants.AlternateKeys) != null)
一种新的抽象方法:
internal abstract void WriteEntityTypeAttribute();
以及一些其他杂项,使您以前的模板无效。 希望这对任何为OData V4升级OData客户端代码生成器的人都有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.