代码之家  ›  专栏  ›  技术社区  ›  Chris Conway

向项目添加非GAC引用

  •  2
  • Chris Conway  · 技术社区  · 16 年前

    每次在我的GAC中添加对Visual Studio 2008中某个Web项目的引用时,它都会将该引用作为GAC引用添加,并且不会将该文件复制到我的bin目录中。但出于部署目的,我想将引用作为非GAC引用添加,以便它将DLL添加到我的bin目录中。我尝试使用浏览按钮来选择引用,而不是从列表窗口中选择,但这也添加了一个GAC引用。

    这些引用都具有.refresh文件,并且在该文件的属性中没有复制本地的选项。

    有什么帮助吗????

    8 回复  |  直到 11 年前
        1
  •  2
  •   cori    15 年前

    克里斯,你可能已经很久没有遇到这个问题了,但是我在2005年的比赛中遇到了你的问题。以防其他人来这里寻求解决方案…

    当然,您是正确的,一个Web项目不会像普通项目那样为您的引用提供复制本地选项,所以复制本地…解决方案是不起作用的。

    我通过简单地将一个现有文件添加到我的web应用程序的bin目录来解决这个问题。缺点是它不添加刷新引用,因此如果重新生成外部文件,则必须手动刷新本地副本。

        2
  •  4
  •   Matt Briggs    16 年前

    右键单击引用,选择属性,将本地副本从“假”翻转为“真”。

        3
  •  1
  •   hmcclungiii    16 年前

    设置为复制本地

        4
  •  1
  •   frank hadder    14 年前

    就像其他人提到的,你可能已经很久没有遇到这个问题了,但我想我会把我的解决方案放在组合中。

    我的问题有点不同。我需要一个.dll的非GAC版本,这样我的构建服务器就可以编译项目而不需要在该服务器上安装有问题的.dll。

    为了解决这个问题,我手动编辑了.csproj(.vbproj)文件(使用记事本),并更新了引用文件以指向本地版本。如果这在将来变得很麻烦,我将不得不卸载该项目并只使用.dll。

    在我的例子中,我更改了行:

    <Reference Include="Microsoft.Data.Entity.CTP, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
    

    成为:

    <Reference Include="Microsoft.Data.Entity.CTP, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>..\Lib\Microsoft.Data.Entity.CTP.dll</HintPath>
    </Reference>
    

    哪里 ..\Lib 是解决方案级别的目录,从项目文件向上一个目录。

        5
  •  1
  •   Charlie    14 年前

    另一种实现此目的的方法是手动创建xxx.dll.refresh文件夹,并将其添加到bin目录中。

    我实际上创建了一个小的助手项目来添加我的solution\dependencies文件夹中的所有文件。对vb.net很抱歉,但它很快,而且看起来和vs做的一样。

        For Each fullFileName In Directory.GetFiles("..\..\..\Dependencies\", "*.DLL")
            Dim shortFileName = Path.GetFileName(fullFileName)
            Dim refreshFileName = shortFileName + ".refresh"
    
            Dim contents = "..\Dependencies\" + shortFileName
    
            File.WriteAllText(refreshFileName, contents)
        Next
    
        6
  •  1
  •   kamaci    13 年前

    1) 从项目中删除GAC引用

    2) 关闭Visual Studio

    3) gacutil/uf[您的名字] (gacutil.exe应在“C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin”中找到)

    4) 重新打开vs并在“浏览”选项卡中添加引用 将dll复制到bin文件夹和.refresh文件中(不再依赖GAC) ++

        7
  •  0
  •   Anton Kolesov    16 年前

    如果您引用.NET框架标准程序集,那么据我所知,您不能拥有它的本地副本。唯一的方法是在目标计算机上安装框架。

    它是第三方程序集,然后您可以从它所在的目录手动将程序集复制到bin目录。

    您还可以尝试在Windows SDK中通过gacutil.exe从GAC中删除程序集,并查看如果您尝试通过“浏览”选项卡添加引用,现在会发生什么情况。

        8
  •  0
  •   ddsharper    11 年前

    我花了好几个小时试图解决这个问题,无意中看到一篇帖子说要以管理员身份打开Visual Studio。它解决了这个问题。所有引用的dll都已添加到bin文件夹中。