3

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 するのを避けることができますか?

もう少し説明を追加するだけです。共有プロバイダーを使用すると、ルート ディレクトリ内にアプリケーションをセットアップできます。だから私が考えていたのは、次の構造を持つことでした:

root/bin/(上記の dll はここにあります)

root/MyApp - ルートの下のビンで dll を見つける何らかの方法が必要です。これはバインディング ヒントのカテゴリに該当する可能性があります。

4

1 に答える 1

1

ILMerge を使用して、それらを 1 つの 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 に答える