TemplateText TT 在Runtime发生 Could not load type ...... because the format is invalid
Severity Code Description Project File Line Suppression State
Error Running transformation: System.TypeLoadException: Could not load type ‘TKTFRS.BondVarietyEx’ from assembly ‘TKTFRSCommonDataTypeLibrary, Version=1.0.0.1, Culture=neutral, PublicKeyToken=null’ because the format is invalid.
at System.Signature.GetSignature(Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
at System.Reflection.RuntimeMethodInfo.get_ReturnType()
at norlib.CommonHelper.GetAsyncMethods(Type arg_tpInterface) in E:\Projects\norlib.tt\Common.cs:line 40
at Microsoft.VisualStudio.TextTemplatingFBE6B5AC633D2EBF765C1C720C201C41C55150808C444DDC45A30A738B537D2C6396CF0B87B3F8DD688B7E5B8C42607BD3EFFEC8C03484E019EEDA5489CE5F1F.GeneratedTextTransformation.Async2Sync(Type arg_tpInterface)
at Microsoft.VisualStudio.TextTemplatingFBE6B5AC633D2EBF765C1C720C201C41C55150808C444DDC45A30A738B537D2C6396CF0B87B3F8DD688B7E5B8C42607BD3EFFEC8C03484E019EEDA5489CE5F1F.GeneratedTextTransformation.TransformText() IWindModuleClient_TKTFRS E:\Projects\TKTFRS\Server\IWindModuleClient_TKTFRS\helper.TKTFRS.sync.tt 1
在这个例子中我们是BondVarietyEx这个对象无法装载,这个特别奇怪。因为编译完全没有错误,.net 版本也正确, 也都是AnyCpu,
去掉含有BondVarietyEx的函数后再次跑tt则没有错误,说明有罪的就是BondVarietyEx, 仔细查看BondVarietyEx的声明:
[Serializable]
[StructLayout(LayoutKind.Sequential)]
public class BondVarietyEx
: BondVariety
{
public double 转换因子
{
get
{
return _cf;
}
set
{
_cf = value;
}
}
public static BondVarietyEx FromBondVariety(BondVariety arg_BondVariety, double arg_d转换因子)
{
........
}
double _cf;
}
发现[StructLayout(LayoutKind.Sequential)], 但是其基类BondVariety已经放弃了这个Attribute, 因为无法做到定长, 但是衍生类却声明为定长, 难道是这个错误?
去掉此Attribute后一切OK~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能