Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 VS2008更喜欢GAC引用解决方案文件夹中的程序集_Visual Studio 2008_Assemblies_Reference_Gac - Fatal编程技术网

Visual studio 2008 VS2008更喜欢GAC引用解决方案文件夹中的程序集

Visual studio 2008 VS2008更喜欢GAC引用解决方案文件夹中的程序集,visual-studio-2008,assemblies,reference,gac,Visual Studio 2008,Assemblies,Reference,Gac,我在解决方案中使用了一些第三方库,并将它们保存在名为3rdParty的独立源代码管理文件夹中。我从VS2008 IDE中添加了对该文件夹中DLL的引用。但是,我发现在保存、关闭和打开解决方案后,引用已更改为指向GAC中的程序集 使用第三方文件夹的原因是,我可以很容易地从任何机器上获取最新版本并构建我的项目,而无需在GAC文件夹中安装任何东西。我怎样才能让VS2008保持我的参考资料不变 Edit:在看到Benjol的答案后,我一直在想是否可以使用程序集清单来解决这个问题。这有助于解决我的问题吗?

我在解决方案中使用了一些第三方库,并将它们保存在名为3rdParty的独立源代码管理文件夹中。我从VS2008 IDE中添加了对该文件夹中DLL的引用。但是,我发现在保存、关闭和打开解决方案后,引用已更改为指向GAC中的程序集

使用第三方文件夹的原因是,我可以很容易地从任何机器上获取最新版本并构建我的项目,而无需在GAC文件夹中安装任何东西。我怎样才能让VS2008保持我的参考资料不变


Edit:在看到Benjol的答案后,我一直在想是否可以使用程序集清单来解决这个问题。这有助于解决我的问题吗?

在我工作的地方,我们使用了类似的方法,尽管我们称之为文件夹
referencedDLS
,到目前为止,我们没有任何问题

不过,您可以尝试的一件事是编辑项目文件以删除相关引用的
PathHint
,这样VS2008就不知道在哪里查找,它将启动正常方法

引用有一个“CopyLocal”设置,如果您将其设置为true,并将SpecificVersion设置为false,那么它应该使用本地引用,而不是GAC引用

GAC DLL在本地DLL之前被引用,因为它们被设计为共享的,但只有在指定了特定版本时才应被选择


如果这些程序集继续导致问题,您是否可以从GAC中删除它们?

即使您可以让VS在本地文件夹中查找,在运行时(我指的是F5/debug运行时)也没有帮助,因为.Net无论如何都会先在GAC中查找


关于CopyLocal,AFAIK,它只是告诉编译器将引用DLL的一个版本复制到项目的/bin文件夹中,因此“复杂”路径不应该有任何问题。

为了让它拾取本地程序集,您必须进入项目属性,在“引用路径”选项卡下,将本地目录(在您的情况下为第三方)添加到目录列表中。这应该可以解决您的问题。

您确定,更改是由VS进行的吗?我们使用的是相同的场景,我们没有问题。唯一的情况是,当引用更改为GAC程序集时,第三方组件需要其他程序集。是。我验证了更改是由VS在保存时进行的。Paulo,如何删除PathHint?我在UI中找不到这个。我在UI上找不到。您需要卸载项目并手动编辑项目文件。我刚检查过,项目文件中没有HintPath或PathHint属性。我想这对于C++/CLI项目来说是不同的。另外,我认为只有当所讨论的程序集不在GAC.mat1t中时,我的程序集才起作用。我的程序集位于位于..\..\3rdParty的文件夹中,因此我认为CopyLocal无法自动计算出文件夹名称。有问题的DLL在GAC中为一些开发人员提供,因为他们使用的应用程序需要GAC参考。删除GAC程序集是可行的,但也会给需要GAC引用的人带来问题。有没有办法强制框架与应用程序在同一目录中查找?无法使用清单文件执行此操作?简短回答,抱歉,我不知道。详细回答:试着浏览一下这一部分: