所以我环顾四周试图找到一些这方面的帖子,但是有许多但没有解决我的具体问题(我能找到)。
我正在尝试在我的项目中添加一些DLL,但很少有来自:
C:\Windows\Microsoft.NET\Framework\v3.5\XXX.YYY.dll
我期待的应该来自GAC。
请建议我在Visual Studio中引用Dll的最佳实践。
答案 0 :(得分:24)
这不是它的工作方式。当您使用Project + Add Reference时,您始终添加引用程序集。这是从不来自GAC的程序集。 GAC是一个运行时实现细节,它只用于在程序执行时提供程序集,从不构建它时。
以这种方式工作非常重要,您计算机上GAC的内容与用户计算机上的GAC内容不匹配。当用户的机器配置不正确无法执行程序时,会有很多DLL Hell对策来确保将参考组件映射到用户的GAC内容并进行良好的诊断。
这也是您在使用资源管理器导航到c:\ windows \ assembly时无法直接查看GAC文件夹的原因。 shell扩展处理程序隐藏了详细信息,以阻止您将错误添加为GAC-ed程序集作为引用程序集。没有为.NET 4程序集安装相同的扩展处理程序,您可以查看c:\ windows \ microsoft.net \ assembly并查看GAC的结构。不要认为现在可以从那里添加引用,参考程序集在.NET 4中更为重要,它们与运行时程序集完全不同。
因此,看到存储在C:\ Windows \ Microsoft.NET \ Framework \ v3.5中的引用程序集是完全正常的,这是.NET 3.5特定引用程序集的主目录,如System.Core.dll。对于.NET 4项目,引用程序集存储在c:\ program files \ reference程序集中,它们应不引用C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319。检查this answer,看看不使用正确的参考组件会导致什么样的不可诊断的痛苦。
答案 1 :(得分:1)
这些程序集是.NET Framework 3.5的程序集。程序集缓存位于
%SystemRoot%\assembly
您可以将.NET Framework 3.5(滚动页面末尾)与项目一起分发。如果您使用的是VS安装项目,则可以使用属性页面来引用它。
要引用这些装配,您可以轻松右键单击“参考”> “添加引用”并从.NET选项卡中选择程序集。有关引用GAC程序集的信息,请参阅this question。