没有代码的ASP.NET页面使用其他库/ DLL

时间:2014-07-29 17:01:20

标签: c# asp.net .net dll

我正在向现有页面添加一个简单的ASP.NET页面(我现在无法改变/构建原始项目),它没有代码隐藏文件。一切都很好,除非我想在我的项目中使用一些存在于另一个库中的函数。

实施例

<%@ Page Language="C#"  %>
<%@ Import Namespace="MyProject.BusinessLogic" %>
<HTML>
   <script runat="server" language="C#">
   public void Page_Load(object sender, EventArgs e)
   {
      bool myBool = false;
      MyLabel.Text = myBool.ToString();  //works fine
      MyLabel.Text = MyProject.BusinessLogic.StatusManager.Get().ToString(); //does not work
   }
   </script>
   <body>
      <form id="MyForm" runat="server">
         <asp:label id="MyLabel" runat="server"></asp:label>
      </form>
   </body>
</HTML>

我得到的错误是..在命名空间'MyProject.BusinessLogic'中不存在(你是否缺少程序集引用?)

知道如何修复此引用问题吗?

我尝试了这些选项:http://msdn.microsoft.com/en-us/library/d864zc1k(v=vs.85).aspx,但没有运气。

2 个答案:

答案 0 :(得分:3)

首先,你的项目必须在代码所在的另一个dll中引用汇编。这是通过&#34;&lt;%@ Assembly&#34;来实现的。标签

例如

<%@ Assembly Name="SomeDll.NameHere.Dll" %>

但请注意,名称中有一个完整的类型名称。例如。 Dll必须位于您要使用它的应用程序的BIN目录中。可选择您可以在全局程序集缓存中安装dll,但是您必须为dll指定一个带有SNK文件的强名称(在类库项目设置)

如果您在一个visual studio解决方案中有多个项目,则可以使用项目引用,然后引用MyProject.BusinessLogic dll。构建Web应用程序时,它会自动将dll复制到bin目录中。

现在也许您已经在项目中引用了dll,但是仍然需要在标记中使用&lt;%Assembly标记。 ASPX引擎不知道你的dll。

您可以选择使用web.config条目为ASPX引擎注册您的dll。

Register assembly in ASP.NET (VS 2005) and web.config

答案 1 :(得分:2)

使用&lt;%@ Import%&gt;为此...

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Web.UI" %>

<script RunAt="server">


//here you can write your C# Code

 public void Page_Load(object sender, EventArgs e)
   {
      bool myBool = false;
      MyLabel.Text = myBool.ToString();  //works fine
      MyLabel.Text = MyProject.BusinessLogic.StatusManager.Get().ToString(); //does not work
   }



</script>