Asp.net mvc 3 未安装MVC3时的MVC 3部署-避免为每个新站点部署Bin

Asp.net mvc 3 未安装MVC3时的MVC 3部署-避免为每个新站点部署Bin,asp.net-mvc-3,deployment,shared-hosting,Asp.net Mvc 3,Deployment,Shared Hosting,我使用的共享主机提供程序没有安装asp.net mvc3。在部署我的应用程序时,我总是为所需的dll执行一个bin部署: Microsoft.Web.Infrastructure System.Web.Helpers System.Web.Mvc System.Web.Razor System.Web.WebPages System.Web.WebPages.Deployment System.Web.WebPages.Razor 我的问题是--我可以把这些dll放在我共享的托管空间的某个地方

我使用的共享主机提供程序没有安装asp.net mvc3。在部署我的应用程序时,我总是为所需的dll执行一个bin部署:

Microsoft.Web.Infrastructure
System.Web.Helpers
System.Web.Mvc
System.Web.Razor
System.Web.WebPages
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
我的问题是--我可以把这些dll放在我共享的托管空间的某个地方,让我部署的应用程序在那里查找它们吗?这样我就可以避免每次部署新的MVC3应用程序时都找到它们并通过ftp发送它们

只是再加一点说明。我的共享提供程序允许我在根目录中设置应用程序。所以我想的是有以下结构:

根/bin/(上面的dll将在这里)


root/MyApp-需要某种方法在根目录下的bin中查找dll。这可能属于绑定提示的范畴

您可以使用ILMerge将它们合并到一个DLL中

在那个页面上,他们还引用了从资源中加载DLL,这是我从未尝试过的

除此之外,如果每个站点都是共享空间,那么每个站点都需要dll

编辑

试试这个:

AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => {

      String pathname = "Your path/" + new AssemblyName(args.Name).Name + ".dll";
      var assemblyData = System.IO.File.ReadAllBytes(pathname);
      return Assembly.Load(assemblyData);
   }

};

我不介意只部署一次--但在我的共享环境中,我可以运行多个站点--这是通过创建新文件夹并从中创建应用程序来完成的。在我的文件夹中放置一个文件夹并让下面的文件夹访问它们时,我考虑了更多。您可以执行类似于动态加载的操作,但您可以从不同的目录动态加载文件,而不是查找资源。这样你就可以部署一次依赖了,我去过。除了远离拒绝生活在当下的垃圾供应商之外,没有真正干净的解决方案。真的,如果他们不支持Mvc3或.NET4,并且被2岁以上的东西所困扰,那就和他们吻别,继续前进。如果你能负担得起,一般不要使用共享主机。问题太大了。找一个专用服务器,或者至少是一个虚拟服务器,在那里你是管理员,可以做任何你想做的事情。matteo——这是一个很好的观点——尽管总的来说我对这些人很满意。