在我的C# MVC项目中,我遇到了一个错误提示:“无法从程序集MyApp.Api中加载类型为MyApp.Api.App”,这个项目引用了一个F# Web API库。C#项目MyApp.Web将F#项目MyApp.Api作为项目引用,并且没有编译错误。可能出现了什么问题?
MyApp.Api项目中的App.fs文件。
MyApp.Api项目中的App.fs文件。
namespace MyApp.Api
open System
open System.Web
open System.Web.Mvc
open System.Web.Routing
open System.Web.Http
open System.Data.Entity
open System.Net.Http.Headers
open System.Net.Http.Headers
type Route = { controller : string; action : string; id : UrlParameter }
type ApiRoute = { id : RouteParameter }
type App() =
inherit System.Web.HttpApplication()
static member RegisterGlobalFilters (filters:GlobalFilterCollection) =
filters.Add(new HandleErrorAttribute())
static member RegisterRoutes(routes:RouteCollection) =
routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" )
routes.MapHttpRoute( "DefaultApi", "api/{controller}/{id}",
{ id = RouteParameter.Optional } ) |> ignore
routes.MapRoute("Default", "{controller}/{action}/{id}",
{ controller = "Home"; action = "Index"; id = UrlParameter.Optional } ) |> ignore
member this.Start() =
AreaRegistration.RegisterAllAreas()
App.RegisterRoutes RouteTable.Routes
App.RegisterGlobalFilters GlobalFilters.Filters
我的MyApp.Web中的global.asax.cs文件
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using MyApp.Api;
namespace MyApp.Web
{
public class WebApiApplication : MyApp.Api.App// System.Web.HttpApplication
{
protected void Application_Start()
{
base.Start();
}
}
}
MyApp.Api.App
的引用,因此构建正常,但当C#网站运行时,它使用旧版本(缓存)的F# DLL,在该DLL中MyApp.Api.App
不存在(或名称/命名空间不同)。 - Jack P.