2

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

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

请问有什么帮助吗?!?

4

8 回答 8

4

右键单击引用,选择属性,将 Copy Local 从 False 翻转为 True

于 2008-12-22T19:25:20.887 回答
2

克里斯,你可能早就解决了这个问题,但我在 VS 2005 中尝试做同样的事情时偶然发现了你的问题。万一其他人来这里寻找解决方案....

当然,您是正确的,Web 项目不会像普通项目那样在您的引用上为您提供复制本地选项,因此 Copy Local... 解决方案是非首发。

我通过简单地将现有文件添加到我的 Web 应用程序的 bin 目录来解决这个问题。缺点是它不添加刷新引用,所以如果你重建外部文件,你将不得不手动刷新本地副本。

于 2009-12-02T16:08:08.740 回答
1

将其设置为复制本地

于 2008-12-22T19:25:32.340 回答
1

就像其他人提到的那样,你可能早就解决了这个问题,但我想我会把我的解决方案混在一起。

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

where..\Lib是解决方案级别的目录,是项目文件的上一级目录。

于 2010-08-09T22:38:46.400 回答
1

1)从您的项目中删除 GAC 引用

2)关闭 Visual Studio

3) gacutil /uf [YourDllName] (gacutil.exe 应该在 "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin" 中找到)

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

于 2010-10-05T13:21:57.903 回答
1

另一种方法是手动创建 XXX.dll.refresh 文件夹并将它们添加到您的 bin 目录中。

我实际上创建了一个小助手项目来添加我的解决方案\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
于 2010-11-09T22:35:03.390 回答
0

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

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

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

于 2008-12-22T20:16:22.300 回答
0

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

于 2013-04-20T09:13:04.043 回答