It seems that starting with .NET 3.0, Microsoft moved some common assemblies to
C:\Program Files\Reference Assemblies\Microsoft\Framework\xxx
in order to support their effort to split out the CLR 2.0 and CLR 4.0 GACs (having also added
C:\%windir%\Microsoft.NET\assembly
).
However, while I have both
C:\Program Files\Reference Assemblies\Microsoft\Framework\xxx
and
C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0
on my development machine, the latter does not exist on a server where I just installed .NET 4.0. A WCF project being deployed there references some common DLLs from this folder and cannot find them.
What am I doing wrong? Should I change these references to the new 4.0 GAC explicitly? Why does this folder not exist on the server?
These are all stored in the GAC at %WINDIR%\assembly , which you can view in Windows Explorer. The actual dlls can be found in subfolders of the GAC , GAC_32 , and GAC_MSIL folders, seemingly dependent on their version.
Reference assemblies are usually distributed with the Software Development Kit (SDK) of a particular platform or library. Using a reference assembly enables developers to build programs that target a specific library version without having the full implementation assembly for that version.
Reference Assemblies folder is used with Visual Studio. While the actual deployed application will use the GAC in c:\Windows\Microsoft.Net\Assembly. I am assuming you didn't install Visual Studio on your server, therefore you wouldn't have the Reference Assemblies Folder.
If you hosting WCF on the server, you need to ensure you installed .NET 4.0 Full Framework and not just the client framework.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With