sgen.exe生成错误“无法加载一个或多个请求的类型”

时间:2013-01-17 04:25:05

标签: .net visual-studio-2012 sgen

我正在构建一个包含多种解决方案的解决方案。除了其中一个以外,所有人都没有任何问题。有问题的一个会发出以下消息:

  

错误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的“

导致此错误的原因是什么?如何解决此问题?仅供参考,我没有写代码。

3 个答案:

答案 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。