3

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

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 传输它们?

只是为了添加更多描述。我的共享提供商让我在我的根目录中设置应用程序。所以我在想的是具有以下结构:

root/bin/(上面的dll会在这里)

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

4

1 回答 1

1

您可以使用 ILMerge 将它们组合成一个 DLL。

http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx

在那个页面上,他们还提到了从资源中加载 DLL,我从未真正尝试过。

http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx

除此之外,如果每个站点都是共享空间,您将需要每个站点的 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);
   }

};
于 2012-05-10T14:08:50.167 回答