我们的应用程序由混合的C#/托管C ++ CLI /本机C ++程序集组成。的DLL。
我们有一个包装器程序集,它公开了应用程序的API。
FOR EXAMPLE ...要创建使用API的新控制台应用程序,您必须引用该程序集,并将控制台应用程序的输出目录设置为已安装应用程序的BIN目录。 (由于使用反射等,一切都必须保留在应用程序的BIN目录并输出到该目录,你不能只复制本地的一个程序集或没有任何工作)
我的问题是在创建ASP.NET Web窗体应用程序(与控制台应用程序无关)时,我想使用该程序集,因此我需要Web应用程序在我们的应用程序的BIN目录中“生存”。
当我尝试发生错误时,由于ASP.NET试图预加载该BIN目录中的每个程序集。
有人可以提供有关如何使其发挥作用的说明吗?我花了好几个小时现在每个参考组件的组合,复制它们,并尝试使用LoadFrom。
答案 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?
祝你好运