我似乎不太可能在设计时从 App_Code 引用我的 MVC Web 应用程序集中的代码。我相信这只是 Visual Studio 中 Web 应用程序项目的本质,以及 App_Code 目录中的代码被编译成不同程序集的事实。
在我最初的问题中,我解释说我想使用 App_Code 因为它具有动态编译功能。考虑到我的可扩展性要求,intellisense 不起作用属性这一事实不应该是一个问题,因为重点是不需要 IDE来开发插件 - 如果我要打开 Visual Studio 来开发它们,我可能会好吧,只需使用类库。
所以考虑我的插件架构,我对定义我的插件(http://weblogs.asp.net/justin_rogers/articles/61042.aspx)的概念很好,我可以像这样在特定目录中自动加载插件:
var assemblies = new List<Assembly>();
var di = new System.IO.DirectoryInfo(Server.MapPath("~/Plugins"));
di.GetFiles("*.dll").ToList().ForEach(x => {
assemblies.Add(Assembly.LoadFrom(x.FullName));
});
List<Plugin> ExternalPlugins =
Plugin.InitializePlugins(assemblies).ToList();
不使用 /bin 的唯一原因是性能。但是,由于插件项目引用了主 Web 项目,我最终不得不使用构建后事件来检查所有内容——我不喜欢这样。
因此,更好的解决方案(正如许多人所建议的那样)是使用配置文件来定义插件并将 dll 放入 bin 中。
但是通过所有这些不同的方法,我绕过了最初的要求——能够在不使用 IDE 并且无需手动编译应用程序的情况下即时调整插件。
所以在这种情况下,使用 App_Code 真的很糟糕,它会回来咬我吗?...