一个程序集被其他项目引用后,编译的时候会出现如下错误:
未能将临时文件复制到输出目录中。
无法将文件“Test.dll”复制到运行目录。另一个程序正在使用此文件,进程无法访问。
需要关闭Visual Studio.Net,删除以前生成的dll文件后才能重新编译,怎样解决?
常见的两种可能性是:
> 这个Dll是不是隶属于一个WinForm程序,而这个Windows程序正在运行中?
> 这个Dll是不是被注册成COM组件了?其中"这个Dll是不是隶属于一个WinForm程序,而这个Windows程序正在运行中?
"应该怎么解释!  
哪里有相关资料介绍!

解决方案 »

  1.   

    不是这样的
    只是你引用的文件与生成的文件是同一个位置时就会出现此种情况
    比如:c项目生成一个c.dll,页在d项目中你对c.dll进行了引用,哪你生成c.dll后再去生成d项目就会出现你所说的情况.如在同一解决方案中,你可以对项目进行引用.
      

  2.   

    c项目生成一个c.dll,页在d项目中你对c.dll进行了引用,该怎么理解。using System;
    using System.Data;
    using System.Data.SqlClient;
    using Nytoo.BLL.Component.SupplyDemandComponent;
    using Nytoo.DA;
    using Nytoo.Common;能这样理解吗?
    当中的“Nytoo.DA,using Nytoo.Common”
      

  3.   

    一个文件在读写时不能被复制到d项目的bin下,这你懂了吧?
      

  4.   

    我现在有五个项目“BLL,Common,DA,WebControl,Webs”。
    其中
    BLL引用:Common,System,System.Data,System.Xml
    Common引用:System,System.Data,System.Xml
    DA引用:BLL,Common,System,System.Data,System.Xml
    WebControl引用:System,System.Data,System.Xml
    Webs引用:BLL,Common,DA,WebControl,System,System.Data,System.Xml现在的情况是我启动VS后,打开解决方案。
    第一次编译都会提示:无法将文件“Nytoo.DA.dll”复制到运行目录。进程无法访问文件,因为另一个程序正在使用此文件。
    关闭VS跟重新启动计算机,再启动VS,编译都会出现这样的情况。
      

  5.   

    “一个文件在读写时不能被复制到d项目的bin下,这你懂了吧?”
    这个我明白是怎么回事。可关键是我应该怎样检查我的程序里到底哪个项目里的哪个类跟页面在读写这个文件。
      

  6.   

    这就关联到系统层次结构问题
    我看你的系统层次结构,可能第一次,你要先生成,comm,第二:要生成da 第三再生成bll,第四生成webcontrol,最后生成webs
    哪么引用的次序就是,在da项目中引用comm项目,bll中引用comm,与da项目,再在webs引用dll,comm,da,webcontrol这样你一个一个依次生成就不会出现你所说哪种情况
      

  7.   

    项目引用图:
    http://www.m8cool.com/aa.jpg
      

  8.   

    你的项目da是数据访问层吧?哪就不能在其项目中引用bll,这是不合逻辑的
      

  9.   

    Bll->主要是对象组成(AdminManagerComponent,CorporationComponent,MemberComponent,XmlBaseComponent,SiteConfigComponent等等)。
    Common->公用类(CurrentTreeView.cs,StringMeans.cs,ErrorMeans.cs,JavaScript.cs等等)
    DA->访问跟数据读取(DataAccess->AdminManager/Corporation/Member,SysSecurity,XML)
    WebControl->页面控件
    Webs->页面访问
      

  10.   

    AdminManagerComponent,CorporationComponent,是什么用?写业务的吧?
    Common->公用类?什么意思?是数据实体吧?
    要是这样的话
    哪证明你的引用逻辑错误
      

  11.   

    “这就关联到系统层次结构问题
    我看你的系统层次结构,可能第一次,你要先生成,comm,第二:要生成da 第三再生成bll,第四生成webcontrol,最后生成webs
    哪么引用的次序就是,在da项目中引用comm项目,bll中引用comm,与da项目,再在webs引用dll,comm,da,webcontrol这样你一个一个依次生成就不会出现你所说哪种情况”
    怎么设置项目的生成顺序:我现在的生成顺序是:
    1、Common
    2、BLL
    3、DA
    4、WebControl
    5、Webs我又尝试了一种方法。
    工具->选项->环境->项目和解决方案->在运行时仅生成启动项目和依赖项(D
    我把它打勾了,确定。接着依次设五个项目中每一个为启动项,其实四个项目都能编译通过,单独只有DA项目编译时发生同样的错误:无法将文件“Nytoo.DA.dll”复制到运行目录。进程无法访问文件,因为另一个程序正在使用此文件。
    关闭VS跟重新启动计算机,再启动VS,第一次编译都会出现这样的情况。
      

  12.   

    第一次编译都会提示:无法将文件“Nytoo.DA.dll”复制到运行目录。进程无法访问文件,因为另一个程序正在使用此文件。
    关闭VS跟重新启动计算机,再启动VS,编译都会出现这样的情况。//还有可能是把bin里面生成的dll删除了,再编译
      

  13.   

    "AdminManagerComponent,CorporationComponent,是什么用?写业务的吧?
    Common->公用类?什么意思?是数据实体吧?
    要是这样的话
    哪证明你的引用逻辑错误"写ASP.NET还不没多久,目前这个项目是我的第ASP.net的第二个项目,也是第一次使用解决方案。我那“AdminManagerComponent”是对象组成。
    using System;namespace Nytoo.BLL.Component.AdminManagerComponent
    {
    /// <summary>
    /// 系统管理员组成。
    /// </summary>
    public class AdminMemberComponent
    {
    private int ID_;
    private string MemberName_;
    private string MemberPassWord_;
    private bool Locked_;
    private int LoginAmount_;
    private string LastLoginDate_;
    private string LastLoginIp_; /// <summary>
    /// 管理员ID
    /// </summary>
    public int ID
    {
    set{ ID_=value; }
    get{ return ID_; }
    } /// <summary>
    /// 管理员名称
    /// </summary>
    public string MemberName
    {
    set{ MemberName_=value; }
    get{ return MemberName_; }
    } /// <summary>
    /// 管理员密码
    /// </summary>
    public string MemberPassWord
    {
    set{ MemberPassWord_=value; }
    get{ return MemberPassWord_; }
    } /// <summary>
    /// 锁定该管理员
    /// </summary>
    public bool Locked
    {
    set{ Locked_=value; }
    get{ return Locked_; }
    } /// <summary>
    /// 登录次数
    /// </summary>
    public int LoginAmount
    {
    set{ LoginAmount_=value; }
    get{ return LoginAmount_; }
    } /// <summary>
    /// 最后登录时间
    /// </summary>
    public string LastLoginDate
    {
    set{ LastLoginDate_=value; }
    get{ return LastLoginDate_; }
    } /// <summary>
    /// 最后登录IP
    /// </summary>
    public string LastLoginIp
    {
    set{ LastLoginIp_=value; }
    get{ return LastLoginIp_; }
    }
    }
    }我不太清楚,哪些内容应该属于“业务层”的内容。Common->公用类?什么意思?是数据实体吧?
    中的“数据实体”应该怎么理解呢。我的“Common”里的一个典型类using System;
    using System.Web;
    namespace Nytoo.Common
    {
    /// <summary>
    /// PublicClass 的摘要说明。
    /// </summary>
    public class GetObjectValue:System.Web.UI.Page
    {
    /// <summary>
    /// 获取Session的值
    /// </summary>
    /// <param name="ParaName">Session对象名称</param>
    /// <returns>返回对象值</returns>
    public static string GetSessValue( string ParaName )
    {
    string SessionValue="";
    try
    {
    //如果Session能找到相应的参数值,则返回该Session对象的值
    SessionValue=HttpContext.Current.Session[ ParaName ].ToString().Trim();
    }
    catch
    {
    //不存在则返回为空。
    SessionValue="";
    }
    return SessionValue;
    } /// <summary>
    /// 获取Request的值
    /// </summary>
    /// <param name="RequestName">Request对象名称</param>
    /// <returns>返回对象值</returns>
    public static string GetRequestValue( string RequestName )
    {
    string ReturnStr="";
    try
    {
    ReturnStr=HttpContext.Current.Request.QueryString[ RequestName ].ToString().Trim();
    }
    catch
    {
    ReturnStr="";
    }
    return ReturnStr;
    } /// <summary>
    /// 读取Cookie的值
    /// </summary>
    /// <param name="CookiesName">Cookie集名称</param>
    /// <param name="CookieName">Cookie名称</param>
    /// <returns>Cookie的值</returns>
    public static string GetCookieValue( string CookiesName,string CookieName )
    {
    string CookieValue;
    try
    {
    CookieValue = HttpContext.Current.Request.Cookies[ CookiesName ].Values[ CookieName ].Trim();
    }
    catch
    {
    CookieValue = "";
    }
    return CookieValue;
    }
    }
    }谢谢
      

  14.   

    关于结构
    你可以看看net架构体系还是什么的一本书
    不错的.
      

  15.   

    “第一次编译都会提示:无法将文件“Nytoo.DA.dll”复制到运行目录。进程无法访问文件,因为另一个程序正在使用此文件。
    关闭VS跟重新启动计算机,再启动VS,编译都会出现这样的情况。//还有可能是把bin里面生成的dll删除了,再编译”对,启动VS后,第一次编译都会提示这样的错误!
    我用试过,关闭VS后,接着删除“BIN”目前下的所有文件,重新启动计算机。
    再启动VS,打开解决方案,打开后就会自动生成解决方案里的五个项目的DLL文档到BIN\目录下再删除“BIN”目录下的“DA.DLL”提示“无法删除Nytoo.DA;共享冲突。源文件或目标文件可能正在使用。”
      

  16.   

    现在问题还没有解决。
    谢谢“biduan,WJY2003,startray”
      

  17.   

    这两三天忙着参考三层结构设计方法,花了点时间看PetShop,收获不少。
    现在已将项目改成“三层结构”进行设计,问题已解决。
    谢谢大家。