如何在已安装的应用程序的bin目录中创建和运行ASP.NET网站

时间:2013-06-24 18:11:27

标签: asp.net .net web-applications

我们的应用程序由混合的C#/托管C ++ CLI /本机C ++程序集组成。的DLL。

我们有一个包装器程序集,它公开了应用程序的API。

FOR EXAMPLE ...要创建使用API​​的新控​​制台应用程序,您必须引用该程序集,并将控制台应用程序的输出目录设置为已安装应用程序的BIN目录。 (由于使用反射等,一切都必须保留在应用程序的BIN目录并输出到该目录,你不能只复制本地的一个程序集或没有任何工作)

我的问题是在创建ASP.NET Web窗体应用程序(与控制台应用程序无关)时,我想使用该程序集,因此我需要Web应用程序在我们的应用程序的BIN目录中“生存”。

当我尝试发生错误时,由于ASP.NET试图预加载该BIN目录中的每个程序集。

有人可以提供有关如何使其发挥作用的说明吗?我花了好几个小时现在每个参考组件的组合,复制它们,并尝试使用LoadFrom。

1 个答案:

答案 0 :(得分:1)

如果没有看到它的构造,那很难但是......

Bin引用

创建一个Web应用程序,并通过bin引用从网站引用必要的dll

右键单击Web应用程序,选择浏览选项并选择需要引用的dll。选择将local local复制到true,这样您就可以将dll复制到Web应用程序中,这样您就不会永远依赖控制台应用程序正好与Web应用程序相关的位置。

虽然我不一定会采用这种解决方案 - 看起来系统的结构有点偏差。十字架你必须裸露等......

OR

GAC引用

您需要从控制台应用程序引用的dll - 强烈命名它们并将它们放在GAC(全局程序集缓存)中。这两个应用程序都可以看到它们。

复制dll

我猜还有另一个解决方案,即在控制台应用程序中添加一个后期构建步骤,重新运行一个批处理文件,该文件将通过dll复制到Web应用程序中。我认为这实际上与bin引用几乎相同。

探索元素

您可以在web.config中使用<probing>元素来指示CLR搜索其他目录以进行汇编(通常只需要GAC和bin(简化就是这样))。这将使您能够引用您的API文件夹 - 但前提是它位于您的应用程序路径下。虽然有人here使用了NFTS结点来解决这个问题。

更多信息here

事实上,这个答案提供了关于此类事情的更多细节

How do I reference assemblies outside the bin folder in an ASP.net application?

祝你好运