2008-12-22 71 views
2

每当我在GAC中的visual studio 2008中添加对web项目的引用时,它都会将引用添加为GAC引用,并且不会将该文件复制到我的bin目录。但为了部署的目的,我想将该引用添加为非GAC引用,以便将该dll添加到我的bin目录中。我尝试使用浏览按钮来选择参考,而不是从列表窗口中选取,但也添加了GAC参考。添加对项目的非GAC引用

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

请帮忙吗?!?

回答

2

克里斯,你可能早已过这个问题,但我偶然发现了你的问题试图做同样的事情在2005年VS万一别人时,来这里寻找一个解决方案....

当然,你是正确的,一个Web项目不会给你提供正常项目的引用的copy local选项,所以Copy Local ...解决方案是一个非启动器。

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

4

右键单击参考,选择属性,从假翻转复制本地为True

+0

没有复制本地的选项。这些属性中唯一可用的选项是:自动刷新路径,文件名和完整路径。 – 2008-12-22 19:36:47

0

如果引用的.NET Framework标准组件,然后按照我的理解,你不能有一个本地副本。唯一的方法是在目标计算机上安装框架。

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

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

1

就像别人提到的那样,你可能早已经过去了这个问题,但我想我会在混合中抛出我的解决方案。

我的问题有点不同。我想要一个.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是在解决方案级别的目录,一级目录的项目文件。

1

1)从项目

2)关闭的Visual Studio

3) GACUTIL/UF [YourDllName] (将Gacutil.exe应中找到的“取出GAC参考C:\ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin“)

4)重新打开VS并在”浏览“选项卡中添加引用 你会有DLL复制到您的bin文件夹和文件.REFRESH(没有更多的GAC依赖) +++

1

另一种方式来完成这仅仅是手动创建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 
0

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

相关问题