C# 从asp.net上的另一个文件夹引用dotnetnuke.dll

C# 从asp.net上的另一个文件夹引用dotnetnuke.dll,c#,asp.net,assemblies,reference,dotnetnuke,C#,Asp.net,Assemblies,Reference,Dotnetnuke,我在服务器上的/root/dnn中有dotnetnuke门户,我正在c#VS2008中创建asp.net应用程序,需要在/root/app中上载 部署应用程序时,它需要从/root/dnn/bin而不是/root/app/bin引用dotnetnuke.dll程序集 如果不将应用程序文件放在/root/dnn中,我如何管理它 我尝试设置自动刷新路径,然后在上载后删除/root/app/bin/dotnetnuke.dll,以便应用程序尝试引用../dnn/bin/dotnetnuke.dll中缺

我在服务器上的/root/dnn中有dotnetnuke门户,我正在c#VS2008中创建asp.net应用程序,需要在/root/app中上载

部署应用程序时,它需要从/root/dnn/bin而不是/root/app/bin引用dotnetnuke.dll程序集

如果不将应用程序文件放在/root/dnn中,我如何管理它


我尝试设置自动刷新路径,然后在上载后删除/root/app/bin/dotnetnuke.dll,以便应用程序尝试引用../dnn/bin/dotnetnuke.dll中缺少的程序集,但“应用程序未预编译”错误弹出,因此我尝试在不预编译的情况下上载它,但是仍然找不到引用。

为什么不给你的应用它自己的副本呢?这将解决所有问题


换句话说,为什么要交叉应用程序引用?这违反了IIS和ASP.NET的所有安全机制毕竟,我必须上传门户文件夹中的.aspx和.aspx.cs文件以及dnn的bin文件夹中的bin文件,将web.config中的几行添加到dnn的web.config中,并通过使用数据集对象(即.xsd、.xss文件)从代码中写入查询来更改对数据库的查询。在上传之前,我还必须将我的App#代码复制到我的.cs文件中,因为在dnn的App#代码中无法同时编译C#和VS。

我认为您尝试执行的最佳操作是将DotNetNuke.dll安装到服务器上的GAC中。我不相信ASP.NET/IIS会允许访问当前网站文件夹结构之外的任何程序集。

正如紫色蚂蚁上面所说的那样

  • 将DotNetNuke程序集加载到GAC中(这很麻烦,因为它使您以后无法XCOPY升级DNN)
  • 将你的应用程序放入DNN应用程序文件夹(听起来像你做的那样)
  • 将DNN dll复制到应用程序文件夹中。(最常见的解决方案)
  • 您考虑的是配置文件的元素。但我认为它不适用于web应用程序,而且(根据文档)只适用于子文件夹

    <configuration>
       <runtime>
          <assemblyBinding>
             <probing privatePath="bin;bin2\subbin;bin3"/>
          </assemblyBinding>
       </runtime>
    </configuration>
    
    
    
    因为门户不使用自己的副本,所以我不能用它做一些与门户相关的事情,比如(new DotNetNuke.Entities.Modules.PortalModuleBase()).UserId。我希望即使你得到了工作的引用,你也不能这样做,因为它只是一个库,将加载到你的应用程序中,我将不得不编写一个dnn模块,但我已经尝试创建一个aspx页面并将其放入dnn文件夹中,对于已登录的用户,我在IFrame中的aspx页面将获取他的用户ID。dnn的有趣之处在于,我通过dnn门户添加了一个新页面,并将其命名为Report。然后我在那个页面上添加了IFrame,我在IFrame中加载的文件名为Report.aspx(来自我的应用程序)。起初我不明白为什么我的页面没有显示在IFrame中,而是递归地显示自己,直到我注意到相同的名称如果你可以在App#Code文件夹中将C#和VB放在一起,你只需在web.config中的Code子目录中添加一个元素,将其与C#一起编译,这样它就可以单独编译了。谢谢你提供的信息,我希望在将来的情况下记住它