我正在使用Team City进行持续集成,用于.Net 4 ASP MVC 3应用程序。
在我的开发机器上,我可以构建并运行我的应用程序,但在构建服务器上,我收到以下错误:
ASPNETCOMPILER : error ASPRUNTIME: Type is not resolved for member 'FluentNHibernate.Cfg.FluentConfigurationException,FluentNHibernate, Version=1.2.0.712, Culture=neutral, PublicKeyToken=8aa435e3cb308880'
FluentNHibernate程序集由项目引用,我甚至已将程序集添加到web.config程序集部分,但我仍然收到错误。
我该怎么做才能诊断问题?
答案 0 :(得分:10)
总结Rob White的评论,问题是某些代码在WebActivator.PreApplicationStartMethod
中运行。修复方法是将该代码移至Application_Start
中的Global.asax
。
WebActivator.PreApplicationStartMethod
是一个汇编属性,用于在构建过程中尽早加载代码。 Phil Haack给出了很好的描述。该属性应该用于注册构建提供程序以及稍后在构建过程中使用的其他内容。因此,ASPNET编译器必须加载并运行此代码才能开始编译视图。
在我将一些代码添加到访问资源(MongoDB)的IoC(StructureMap)启动代码后,我在appharbor上遇到了这个特殊错误。由于appharbor构建机器无法访问此资源,因此它会抛出各种错误。
需要注意的是PreApplicationStartMethod
适用于应用前启动等内容,例如构建,而不是初始化应用程序。如果您正在进行应用初始化操作,请在Global.asax
Application_Start
中执行此操作。我知道MVC4的默认StructureMap NuGet包使用属性而不是Global
。可能还有其他软件包会导致您犯同样的错误。