当我第一次启动我的网站时,我收到了这个错误
Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
我究竟做错了什么?
我正在使用.NET 4并从Visual Studio启动该站点.
我最近唯一改变的是将Simple Injector(通过Nuget)添加到我的项目中.
这是堆栈跟踪
[TypeLoadException: Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.]
System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type) +0
System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) +180
System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments) +192
System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, …Run Code Online (Sandbox Code Playgroud) 我前几天开发了一个针对.NET 4的应用程序,并将XCOPY安装到Windows XP机器上.我告诉机器的所有者他们需要安装.NET Framework 4来运行我的应用程序,他告诉我他做了(不是一个可靠的来源).当我运行应用程序时,我看到一个消息框,说该应用程序需要.NET Framework 4,我想安装它吗?单击是按钮将我带到Microsoft网站,稍后单击几次,安装了.NET 4,并且应用程序已成功启动.
过去,XCOPY将.NET应用程序安装到没有安装正确.NET版本的计算机上,导致应用程序在启动时崩溃,并且没有向用户显示有用的信息.这次为什么不同?
我喜欢这个功能.我想知道将来如何利用它.
我有一个Web API 2项目,其中包含可在本地运行良好的帮助页面但在将其推送到Azure时会抛出此错误:
找不到方法:'System.String System.String.Format(System.IFormatProvider,System.String,System.Object)
我暂时关闭了自定义错误,因此可以在此处看到完整的堆栈跟踪
错误源自这行代码:
string selectExpression = String.Format(CultureInfo.InvariantCulture,MethodExpression,GetMemberName(reflectActionDescriptor.MethodInfo));
见这里的第96行
我甚至不确定这个去哪里.
在此先感谢您的帮助.
我有一些构建代理通过TeamCity设置为我们构建.NET代码,我开始怀疑,尽管项目设置,他们是否输出.NET 4.5构建的程序集.我怀疑的是,我不知道Windows 2012 Server是否带有开箱即用的.NET 4.5或4.0,因此它是否只有4.0或任何4.0程序集可用.
如何查看磁盘上的程序集并确定它是使用.NET 4.0还是4.5构建的?
正如显然由Marc Gravell这篇博客,还有的在这些组件是如何建成的差异,尽管我们可能无法实际使用任何.NET 4.5组件/特别功能.
我尝试在程序集上使用ILDASM,但是已知的.NET 4.5(.1)控制台应用程序上的元数据引用仍然说4.0:
// Metadata version: v4.0.30319
Run Code Online (Sandbox Code Playgroud)
我尝试启动仅安装了.NET 4.0的应用程序Windows 7,然后启动,但是如果只能通过测试所有内容来确定一切是否正常,那么我宁愿再尝试一下,看看它是否内置了正确的版本首先.
这可能吗?