.NET 4.0缺少引用程序集文件夹

18

从.NET 3.0开始,微软将一些常见程序集移动到以下目录:

C:\Program Files\Reference Assemblies\Microsoft\Framework\xxx

这是为了支持他们分离CLR 2.0和CLR 4.0 GAC的努力(还加入了

C:\%windir%\Microsoft.NET\assembly)。

然而,在我的开发机器上,我既有

C:\Program Files\Reference Assemblies\Microsoft\Framework\xxx

又有

C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0

但在刚安装.NET 4.0的服务器上,后者并不存在。在部署WCF项目时,该项目引用了此文件夹中的一些公共DLL,并且找不到它们。

我做错了什么?我应该显式更改这些引用以使用新的4.0 GAC吗?为什么服务器上没有这个文件夹?


1
你确定你没有在64位机器上安装32位的.NET 4.0,并且引用程序集文件夹最终出现在“Program files(x86)”中吗? - Klaus Byskov Pedersen
@KlausByskovHoffmann 服务器也是32位的,所以没有Program files(x86)文件夹。不过这是个好建议! - Michael Kingsmill
1个回答

26

参考程序集文件夹用于 Visual Studio。而实际部署的应用程序将使用 c:\Windows\Microsoft.Net\Assembly 中的 GAC。我假设您没有在服务器上安装 Visual Studio,因此您不会拥有参考程序集文件夹。

如果您在服务器上托管 WCF,则需要确保您安装了 .NET 4.0 完整框架而不仅仅是客户端框架。


2
接受了这个答案,因为它很好地解释了.NET 4.0中的GAC/引用程序集设置。然而,在我的情况下,事实证明我在服务器上缺少一些非框架dll文件,它们是我问题的根本原因。感谢您指引我正确的方向! - Michael Kingsmill
需要注意的一点是,参考程序集内容随着VS以及几个SDK一起提供,甚至还有来自Microsoft的单独下载。 - Lex Li
1
@arviman 微软有一个页面,https://msdn.microsoft.com/en-us/vstudio/hh487283.aspx - Lex Li
@LexLi - 谢谢,但我最终指向了 .net framework dll 而不是引用程序集。 - arviman
你应该始终指向引用程序集。更多背景信息请参见 https://blog.lextudio.com/the-rough-history-of-referenced-assemblies-7d752d92c18c - Lex Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接