我正在构建一个包含多种解决方案的解决方案。除了其中一个以外,所有人都没有任何问题。有问题的一个会发出以下消息:
错误2无法加载一个或多个请求的类型。取回 LoaderExceptions属性更多 信息。 J:\ MyPlugins \ MyPlugin1 \ SGEN MyPlugin1
我打开了Visual Studio中的详细输出,我得到了 以下:C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ sgen.exe / assembly:
我用FusionLog检查输出,所有内容都正确加载。结果证明这是一个红鲱鱼。我决定再次运行构建,并显示详细程度。我得到了以下内容:
Microsoft(R)Xml序列化支持实用程序[Microsoft(R).NET Framework,Version 4.0.30319.17929]版权所有(C)Microsoft 公司。版权所有。如果您想要更多帮助, 请输入“sgen /?”。 SGEN:错误:无法加载一个或多个 请求的类型。检索LoaderExceptions属性以获取更多信息 信息。该命令退出代码1.完成执行任务 “SGen” - 失败。
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v8.0A \ bin \ NETFX 4.0 Tools \ sgen.exe /assembly:“:MyPlugins \ MyPlugin1.dll”/ proxytypes /reference:"J:\MyPlugins\MyPlugin1\packages\FluentValidation.3.4.6.0\lib\Net40\FluentValidation.dll” / reference:“C:\ Program Files(x86)\ Reference 大会\微软\ Framework.NETFramework \ V4.0 \ mscorlib.dll中” /reference:"J:\MyPlugins\MyPlugin1\Libraries\Core\bin\Release\Core.dll” /reference:"J:\MyPlugins\MyPlugin1\Libraries\Services\bin\Release\Services.dll” /reference:"J:\MyPlugins\MyPlugin1\Presentation\Web.Framework\bin\Release\Web.Framework.dll” / reference:“C:\ Program Files(x86)\ Reference 大会\微软\ Framework.NETFramework \ V4.0 \ System.Core.dll” / reference:“C:\ Program Files(x86)\ Reference 大会\微软\ Framework.NETFramework \ V4.0 \ System.Data.dll中” / reference:“C:\ Program Files(x86)\ Reference 大会\微软\ Framework.NETFramework \ V4.0 \ System.dll中” / reference:“C:\ Program Files(x86)\ Reference 大会\微软\ Framework.NETFramework \ V4.0 \ System.EnterpriseServices.dll” / reference:“C:\ Program Files(x86)\ Reference 大会\微软\ Framework.NETFramework \ V4.0 \ System.Web.dll中” / reference:“C:\ Program Files(x86)\ Microsoft ASP.NET \ ASP.NET MVC 4 \ Assemblies \ System.Web.Mvc.dll“/ reference:”C:\ Program Files (86)\参考 大会\微软\ Framework.NETFramework \ V4.0 \ System.Web.Services.dll” / reference:“C:\ Program Files(x86)\ Reference 组件\微软\ Framework.NETFramework \ V4.0 \ system.xml.dll的“
导致此错误的原因是什么?如何解决此问题?仅供参考,我没有写代码。
答案 0 :(得分:12)
一个很棒的提示,对我有用,取自这里:http://hashtagfail.com/post/5255977780/sgen-loaderexceptions-error
发生这种情况的原因是在发布版本中,Visual Studio 尝试生成包含类型的序列化程序集 您的解决方案,以提高XmlSerializer序列化性能, 你应该选择序列化你的类型。 可以禁用此功能 转到项目属性的“构建”选项卡并设置“生成” 序列化程序集“到”关闭“。
答案 1 :(得分:1)
我遇到了同样的问题,这在项目中是一个不好的参考。从GAC删除DLL后,它工作正常。您可以使用Fusion Log找到问题DLL。更多信息here
答案 2 :(得分:0)
解决方案很简单但很难找到。您必须删除asp.net预编译文件夹。由于插件是动态引用的,因此.NET无法像其他组件一样更新它的dll。