我建立了一个网站,然后又建立了一个类库,网站添加引用类库时,可以使用类库生产的dll但是如果把类库移除掉,把dll放在bin里面却不能使用。这样尝试了n遍了,依然是这种情况,你说奇怪不奇怪?我的是windows 2003server操作系统,vs2008,.net3.5。vs我已经从新安装过,补丁也打过更奇怪的是,添加引用后,在项目的属性页的引用项里面应该显示引用的dll文件,但是我的就是没有显示,你说奇怪不奇怪?

解决方案 »

  1.   

    把属性的生成里面的路径改成网站BIN目录试试呢
      

  2.   

    不奇怪。你在bin中放dll之后应该重新引用你这个dll
      

  3.   

    我显示建立的网站,然后默认解决方案,在该解决方案下添加新的项目(类库),然后编写代码,生成类库成功。把dll复制一份拷出来。1、把类库移除。然后在上面的网站中右键点击“添加引用”选择刚才拷贝出来的dll,然后网站自动添加一个bin文件夹并添加了dll文件。这样操作有错误吗?这样添加的dll不能用,在属性页里面的也不出现这个dll,为什么?2、把网站bin删除掉,然后在项目解决方案中把类库添加进来,这样解决方案下有网站和类库两个项目,这时候在网站上右键点击添加引用,这次引用这个类库,然后网站又会自动添加bin文件夹,并添加dll文件。这样的操作有误吗?这样添加的dll就能使用,在属性页里面就会显示该类库的引用。这个是正常的,但是上面那个怎么解释呢?如果你觉得不奇怪,请说出理由,不然谁知道呢?
      

  4.   

    编译一下
    只要在bin目录下的dll文件都可以被引用的 前提是你得添加引用
      

  5.   

    首先dll绝对没问题,添加引用的操作方法也没问题,很多人试了很多遍(我们一个项目组好几个不可能都出现弱智的问题吧)其次,下面这个问题
    http://topic.csdn.net/u/20100316/15/eded881c-73dd-4ebc-904b-3321cc63f53c.html?seed=722101810&r=63979777#r_63979777
    添加了引用不能用,然后进一步查找原因,发现我这里根本就不能单独引用dll,单独引用dll找不到命名空间。除非加上生成dll的类库项目才能用。我生成dll就是为了方便使用,但是直接引用dll又不能用,问题就是这么简单,却又决绝不了。期待您的解决方案,Thank you very much for you answer!
      

  6.   

    程序=>Visual Studio 2008=>Visual Studio Tools=>Visual Studio 2008 Command Prompt
    打开命令窗后,输入gacutil.exe -i [这里放你的dll带路径的全名] 
    然后回车
      

  7.   

    不奇怪。你在bin中放dll之后应该重新引用你这个dll至于。为什么要用第二次的方法。是第一次中有此东西没有清理干净(系统认为是第二个类库)。也可以在第一次的引用中。更新原来的引用。
      

  8.   

    自己引用自己?自己是不能引用自己的.
    把类库独立成一个项目进行Build.然后引入项目.
    如果这样都不能,就是你VS的问题了
      

  9.   

    新建的web技术交流群,欢迎大家加入一起讨论:
    群号:29037453
      

  10.   


    提示:将程序集添加到缓存失败:试图安装没有强名称的程序集。请问是怎么回事?----------------------------------------------------------
    以下来之MSDN(我不多说了,别纠缠关于如何操作了,正常操作在我这里不能用,否则我也不问问题了):Bin 文件夹ASP.NET 将网站的 Bin 文件夹识别为特定类型的内容的特殊文件夹。Bin 文件夹用于包含要在您的 ASP.NET Web 应用程序中引用的自定义 ASP.NET 控件、组件或其他代码的已编译程序集(.dll 文件)。您可以将已编译的程序集存储在 Bin 文件夹中,将其他代码存储在自动引用它的 Web 应用程序(如网页代码)中的任意位置。一个典型示例是具有自定义类的已编译代码。可以将已编译的程序集复制到 Web 应用程序的 Bin 文件夹,这样,该类就可用于所有网页。Bin 文件夹中的程序集不需要安装在全局程序集缓存 (GAC) 中。.dll 文件出现于 Bin 文件夹中就足以让 ASP.NET 能够识别它。如果您更改了该 .dll 文件,将其新版本写入 Bin 文件夹,则 ASP.NET 会检测到此更新,以后会将该 .dll 文件的新版本用于新的网页请求。  Bin 文件夹的安全 
    将已编译的程序集放在 Bin 文件夹中存在一定的安全风险。如果您自己编写代码并编译了它,就知道代码的功能。但是,您应象对待任何可执行代码一样对待 Bin 文件夹中的已编译代码。在对代码进行测试并确信了解其功能之前,务必小心谨慎。
    。。
      

  11.   

    找到了,解决方法,似乎比较麻烦...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++那么,如何创建强命名的程序集呢?以下是其步骤使用SN工具来生成密钥对。该工具位于安装.NET Framework SDK的Bin目录中,在命令行中使用“ SN -k [驱动器号]:[放置密钥的目录][密钥名称].snk ”这样的语句可以生成密钥对。如,我们使用 SN -k C:"MySloutionKey.snk,可以把名为MySloutionKey.snk的密钥对文件生成到C盘根目录下;
    此时,该密钥对并未与项目的程序集建立关联,我们需要打开项目(Project)的AssemblyInfo.cs 文件。此文件具有一个程序集属性列表,默认情况下,在 Visual Studio .NET 中创建项目时将包括这些属性。在代码中修改名为“AssemblyKeyFile”的属性,如下所示:
    [assembly:AssemblyKeyFile("C:"MySloutionKey.snk")]这样,编译该项目即生成强命名的程序集。
             根据以上的说法,这个错误的解决问题如下:首先打开visual studio 2005命令提示(开始-->程序-->microsoft visual studio 2005-->visual studio  tools-->visual studio 2005命令提示),在其中输入:sn  -k  PetShop.IBLL.snk回车,这样就生成了 PetShop.IBLL.snk,在路径C:"Program Files"Microsoft Visual Studio 8"VC找到 PetShop.IBLL.snk文件,放在IBLL项目的根目录也就是IBLL目录下,然后打开BLL项目的AssemblyInfo.cs,在里面加入如下代码行:[assembly: AssemblyKeyFile("PetSHop.IBLL.snk")],然后重新生成PetShop.IBLL项目,这样一个强命名的程序集就生成了
    +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++越来越怀疑是vs的问题,可是我都重新安装两遍了,就差重新安装操作系统了,,,