我正在开发一个WinForm应用程序,我有一些嵌入式资源(表单的图形布局)。问题是,当我在我的机器上启动应用程序时它运行得很好,但是如果我将它传递到另一台PC上它可能会也可能不会工作。在我试过的最后一台计算机上(Windows 7 64位,安装了.NET 4.0),当我尝试访问资源时它被阻止了。这是阻止应用程序的代码,下面会抛出完整的异常。
//Note: notifierName is a string passed as an argument
_icon = new NotifyIcon
{
Text = notifierName,
Icon = SystemIcons.Application,//Properties.Resources.Tray,
Visible = true
};
try
{
_icon.Icon = Properties.Resources.Tray;
}
catch (Exception e)
{
Logger.WriteLog(e.ToString());
}
在追踪导致异常的原因之后,我尝试将所有资源设置为“嵌入资源”,.exe的大小加倍(因此图像实际上保存在那里)但发生了同样的错误。我想我缺少一些关于资源如何工作的东西,因为在另一台机器上传递相同的exe并没有造成所有这些麻烦。谢谢你的帮助。
System.TypeLoadException:无法加载类型'System.Runtime.CompilerServices.ExtensionAttribute'domall'assembly'mscorlib,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'。 在System.ModuleHandle.ResolveMethod中(RuntimeModule模块,Int32 methodToken,IntPtr * typeInstArgs,Int32 typeInstCount,IntPtr * methodInstArgs,Int32 methodInstCount) 在System.ModuleHandle.ResolveMethodHandleInternalCore中(RuntimeModule模块,Int32 methodToken,IntPtr [] typeInstantiationContext,Int32 typeInstCount,IntPtr [] methodInstantiationContext,Int32 methodInstCount) 在System.ModuleHandle.ResolveMethodHandleInternal中(RuntimeModule模块,Int32 methodToken,RuntimeTypeHandle [] typeInstantiationContext,RuntimeTypeHandle [] methodInstantiationContext) 在System.Reflection.CustomAttributeData..ctor中(RuntimeModule范围,CustomAttributeRecord caRecord) 在System.Reflection.CustomAttributeData.GetCustomAttributes中(RuntimeModule模块,Int32 tkTarget) 在System.Reflection.CustomAttributeData.GetCustomAttributesInternal(RuntimeAssembly target)中 在System.Resources.ManifestBasedResourceGroveler.GetNeutralResourcesLanguage(Assembly a,UltimateResourceFallbackLocation& fallbackLocation)中 在System.Resources.ResourceManager.CommonSatelliteAssemblyInit()中 在System.Resources.ResourceManager..ctor(String baseName,Assembly assembly)中 在PatcherNET4.Properties.Resources.get_ResourceManager()中 在PatcherNET4.CustomControls.Notifier.Create(String notifierName)
中
答案 0 :(得分:2)
当您使用.Net 4.5
编译应用程序但在4.0.
In .Net 4.5 ExtensionAttribute
中移除System.Core
并添加mscorlib
时,会发生此错误。
Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'mscorlib