没有\ Bin或GAC的ASP.NET中的引用DLL

Cra*_*ker 11 asp.net dll web-config reference

我在源代码控制下有一个ASP.NET项目(Subversion).由于各种原因,我不想将\ Bin目录或其内容添加到源代码控制,所以我有svn:忽略它.在Visual Studio构建期间将DLL加载到此处,我可以从一个干净的目录开始和/或删除此目录的所有内容,但仍然可以成功构建.

我有两种方法可以引用代码以包含在项目中:

  1. 在Web.config元素中//configuration/configSections/system.web/compilation/assemblies.我可以<add>通过这种方式使用GAC中的任何DLL.我为所有的系统dll做这个.
  2. 在VS解决方案中,Project/ProjectSection/ProjectReferences中有一个设置,允许我指定对解决方案中其他项目的包含引用.

(请注意,这与非Web项目不同,其中对外部依赖项的所有引用都存储在项目文件中.对于VS Web项目,没有项目文件,因此必须将它们存储在其他位置.)

现在我有一个第三方编译的DLL,我想包含在项目中.不幸的是,我发现的参考选项似乎都不适合我:

  1. 除非GAC中存在DLL,否则通过web.config/system.web/compilation/assemblies进行引用不起作用; 你不能使用文件路径.我真的想避免GAC依赖,因为这意味着需要额外的一步来使项目在每台目标机器上运行.
  2. 我没有找到在解决方案中包含文件引用的方法,就像我可以使用项目引用一样.
  3. 每当我使用VS的"添加引用"对话框添加文件引用时,它只会将DLL复制到\ Bin目录.这对我来说不起作用,因为我的\ Bin目录不是跨系统持久的.

有没有其他方法可以引用DLL文件并让它坚持下去?

Nea*_*eal 5

如果您正在进行任何类型的认真开发,我建议您从网站项目迁移到Web项目,因为这样您就可以在整个解决方案中以相同的方式管理这些依赖项.

但是,假设您无法执行此操作,请将您需要从Web项目引用的所有程序集放在某个文件夹(例如lib\web)中,并将预构建事件添加到您的Web项目中,以复制该文件夹的内容进入web目录的bin文件夹.现在,只要您想为Web项目添加依赖项,就可以将其放在lib\web文件夹中,然后添加引用.无论何时构建,所有引用的程序集都将被复制到文件夹中,以便您可以删除bin文件夹或执行干净的检出并且没有任何问题.

  • 您提供的解决方案不起作用:我们无法向网站添加预构建事件. (3认同)