每次我在我的 GAC 中的 Visual Studio 2008 中添加对 Web 项目的引用时,它都会将该引用添加为 GAC 引用,并且不会将文件复制到我的 bin 目录中。但出于部署目的,我想将引用添加为非 GAC 引用,以便将 dll 添加到我的 bin 目录中。我尝试使用浏览按钮选择引用而不是从列表窗口中选择,但这也添加了 GAC 引用。
这些引用都带有 .refresh 文件,并且在文件的属性中没有复制本地的选项。
请问有什么帮助吗?!?
每次我在我的 GAC 中的 Visual Studio 2008 中添加对 Web 项目的引用时,它都会将该引用添加为 GAC 引用,并且不会将文件复制到我的 bin 目录中。但出于部署目的,我想将引用添加为非 GAC 引用,以便将 dll 添加到我的 bin 目录中。我尝试使用浏览按钮选择引用而不是从列表窗口中选择,但这也添加了 GAC 引用。
这些引用都带有 .refresh 文件,并且在文件的属性中没有复制本地的选项。
请问有什么帮助吗?!?
右键单击引用,选择属性,将 Copy Local 从 False 翻转为 True
克里斯,你可能早就解决了这个问题,但我在 VS 2005 中尝试做同样的事情时偶然发现了你的问题。万一其他人来这里寻找解决方案....
当然,您是正确的,Web 项目不会像普通项目那样在您的引用上为您提供复制本地选项,因此 Copy Local... 解决方案是非首发。
我通过简单地将现有文件添加到我的 Web 应用程序的 bin 目录来解决这个问题。缺点是它不添加刷新引用,所以如果你重建外部文件,你将不得不手动刷新本地副本。
将其设置为复制本地
就像其他人提到的那样,你可能早就解决了这个问题,但我想我会把我的解决方案混在一起。
我的问题有点不同。我想要一个非 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
是解决方案级别的目录,是项目文件的上一级目录。
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)+++
另一种方法是手动创建 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
如果您引用 .NET Framework 标准程序集,那么据我所知,您无法拥有它的本地副本。唯一的方法是在目标计算机上安装框架。
如果它是第三方程序集,那么您可以将程序集从它所在的目录手动复制到 bin 目录。
您也可以尝试通过 Windows SDK 中的 gacutil.exe 从 GAC 中删除程序集,看看现在如果您尝试通过“浏览”选项卡添加引用会发生什么。
我花了几个小时试图解决这个问题,并遇到一个帖子说要以管理员身份打开 Visual Studio。它解决了这个问题。所有引用的 dll 都添加到 bin 文件夹中。