2

mvc 3 プロジェクトを作成しました。名前空間は [POC.MVC.PluginHost] です。コントローラーの名前空間は [POC.MVC.PluginHost.Controllers] です。クラス ライブラリ プロジェクトを作成し、その名前空間を [POC.MVC.PluginHost.Controllers] に変更しました。

クラス ライブラリ プロジェクト コード:

namespace POC.MVC.PluginHost.Controllers
{
    public class BasicExampleController : Controller
    {
        public ActionResult Index()
        {
            // Add action logic here
            throw new NotImplementedException();
        }
        public ActionResult Display()
        {

            return Content("");

        }
    }
}

私はそれをコンパイルしてmvcプロジェクトのbinディレクトリにコピーします。ブラウズすると正常http://localhost:xxxx/BasicExample/displayに動作しますが、このコンパイルされたクラスライブラリのdllを[プラグイン]のような別のフォルダにコピーしたいのですが、動作しません。それを私の mvc プロジェクトの bin フォルダーにコピーします。この問題を解決する方法はありますか?

編集 .....................................

私は私のweb.configで次のようにテストします:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <probing privatePath="Plugin" />
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
    <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
  </dependentAssembly>
</assemblyBinding>

しかし、これは機能しません!!!!

そして私はこれをテストしますが、これはまだ機能しません.....

    static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
    {
        string assembliesDir = "Plugin";

        string aa = System.IO.Path.Combine(assembliesDir, args.Name + ".dll");
        aa = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, aa);
        Assembly asm = Assembly.LoadFrom(aa);
        return asm;
    }

    protected void Application_Start()
    {

        RegisterRoutes(RouteTable.Routes);
        AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
        AppDomain.CurrentDomain.Load("SamplePlg");

        System.Web.Hosting.HostingEnvironment.RegisterVirtualPathProvider(new AssemblyResourceProvider());

    }
4

1 に答える 1

5

こちらもご覧ください

C#: カスタム アセンブリ ディレクトリ

アセンブリを読み込むために検索する app.config に追加の検索パスを追加できます。例えば

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <probing privatePath="lib" />
  </assemblyBinding>
</runtime>
于 2012-10-02T14:39:54.737 に答える