Caching the Assembly during Biztalk application deployment

Hi All,

  I have just started to work with Biztalk 2013. I have created an application and deployed  from VS 2012.

After deploying i observed that Biztalk assemblies are stored in the following folder:

C:\Windows\Microsoft.NET\assembly\GAC_MSIL not in C:\Windows\assembly

I have tried to drag Biztalk assembly into C:\Windows\assembly but it didnt copied, Where as non-biztlak assembly get copied there.

And now I have few questions:

1. where(In which path) do i need to keep my non-biztalk assembly?

2. whether do i need to keep the Biztalk assembly C:\Windows\assembly also.

3. while running the application whether biztalk application will refer the biztalk dll from C:\Windows\Microsoft.NET\assembly\GAC_MSIL  and non-biztalk dll from C:\Windows\assembly

4. After deploying from VS2012, non-biztalk dll was not present in the Resorce folder only biztalk dll was there.So do I need to add them manually or no need to add non-biztalk dll there? 

Please help me  out.

Regards,

Joy

January 29th, 2015 1:01am

Hi Joy,

Visual studio 2012  uses .NET 4.5.  Net 4.5  (from VS 201/.Net 4.0 onwards)  gac's the dlls into the GAC location C:\Windows\Microsoft.NET\assembly\GAC_MSIL whereas BizTalk uses GAC location as C:\Windows\assembly folder for all the dlls.

Answers to your questions are inline..

  1. where(In which path) do i need to keep my non-biztalk assembly?

BizTalk runtime uses C:\Windows\assembly folder for both BizTalk and non-BizTalk assemblies. Check the following article from MSDN from more information: https://msdn.microsoft.com/en-us/library/aa560649.aspx

2. Whether do i need to keep the Biztalk assembly C:\Windows\assembly also.

When you deploy BizTalk project from Visual studio BizTalk assemblies automatically installed in the GAC C:\Windows\assembly  (when Install to Global Assembly Cache is set to true in project properties)

3. while running the application whether biztalk application will refer the biztalk dll fromC:\Windows\Microsoft.NET\assembly\GAC_MSIL  and non-biztalk dll from C:\Windows\assembly

BizTalk runtime uses C:\Windows\assembly folder for both BizTalk and non-BizTalk assemblies. BizTalk assemblies are installed in C:\Windows\assembly folder when you use VS. But for non-BizTalk assemblies, use any of the methods (BTSTask command-line tool, BizTalk Server Administration console, Drag and drop) mentioned in the following article: https://msdn.microsoft.com/en-us/library/aa559668.aspx

4. After deploying from VS2012, non-biztalk dll was not present in the Resorce folder only biztalk dll was there.So do I need to add them manually or no need to add non-biztalk dll there? 

Non-BizTalk assemblies need to be copied to C:\Windows\assembly folder using any one of the above mentioned methods.

Regards,

M.R.Ashwin Prabhu

Free Windows Admin Tool Kit Click here and download it now
January 29th, 2015 1:54am

BizTalk Server 2009 and earlier are based on the .Net 2.0 CLR which runs .Net 2.0-3.5x.  CLR 2.0 uses %\Windows\Assembly for the CAC location.

BizTalk Server 2010 and later are based on the .Net 4.0 CLR.  CLR 4.0 uses %\Windows\Microsoft.Net\assembly.

To answer you specific questions:

  1. All BizTalk related assemblies should be in the GAC
  2. Just let deployment and/or MSI put the assembly in the right place, you may have CLR 2.0 referenced Assemblies which go in the legacy GAC.  Basically, don't worry about it.
  3. Visual Studio Deploy, BizTalk Administrator, gacutil.exe and .msi's will put the Assembly in the correct location based on it's version.  Again, don't worry about it.
  4. To generate complete .msi files, you have to add your additional Assemblies to the Resources folder in BizTalk Administrator separately.
  • Proposed as answer by DPS Bali Thursday, January 29, 2015 6:56 AM
January 29th, 2015 3:58am

BizTalk Server 2009 and earlier are based on the .Net 2.0 CLR which runs .Net 2.0-3.5x.  CLR 2.0 uses %\Windows\Assembly for the CAC location.

BizTalk Server 2010 and later are based on the .Net 4.0 CLR.  CLR 4.0 uses %\Windows\Microsoft.Net\assembly.

To answer you specific questions:

  1. All BizTalk related assemblies should be in the GAC
  2. Just let deployment and/or MSI put the assembly in the right place, you may have CLR 2.0 referenced Assemblies which go in the legacy GAC.  Basically, don't worry about it.
  3. Visual Studio Deploy, BizTalk Administrator, gacutil.exe and .msi's will put the Assembly in the correct location based on it's version.  Again, don't worry about it.
  4. To generate complete .msi files, you have to add your additional Assemblies to the Resources folder in BizTalk Administrator separately.
Free Windows Admin Tool Kit Click here and download it now
January 29th, 2015 3:58am

BizTalk Server 2009 and earlier are based on the .Net 2.0 CLR which runs .Net 2.0-3.5x.  CLR 2.0 uses %\Windows\Assembly for the CAC location.

BizTalk Server 2010 and later are based on the .Net 4.0 CLR.  CLR 4.0 uses %\Windows\Microsoft.Net\assembly.

To answer you specific questions:

  1. All BizTalk related assemblies should be in the GAC
  2. Just let deployment and/or MSI put the assembly in the right place, you may have CLR 2.0 referenced Assemblies which go in the legacy GAC.  Basically, don't worry about it.
  3. Visual Studio Deploy, BizTalk Administrator, gacutil.exe and .msi's will put the Assembly in the correct location based on it's version.  Again, don't worry about it.
  4. To generate complete .msi files, you have to add your additional Assemblies to the Resources folder in BizTalk Administrator separately.
January 29th, 2015 3:58am

BizTalk Server 2009 and earlier are based on the .Net 2.0 CLR which runs .Net 2.0-3.5x.  CLR 2.0 uses %\Windows\Assembly for the CAC location.

BizTalk Server 2010 and later are based on the .Net 4.0 CLR.  CLR 4.0 uses %\Windows\Microsoft.Net\assembly.

To answer you specific questions:

  1. All BizTalk related assemblies should be in the GAC
  2. Just let deployment and/or MSI put the assembly in the right place, you may have CLR 2.0 referenced Assemblies which go in the legacy GAC.  Basically, don't worry about it.
  3. Visual Studio Deploy, BizTalk Administrator, gacutil.exe and .msi's will put the Assembly in the correct location based on it's version.  Again, don't worry about it.
  4. To generate complete .msi files, you have to add your additional Assemblies to the Resources folder in BizTalk Administrator separately.
Free Windows Admin Tool Kit Click here and download it now
January 29th, 2015 3:58am

BizTalk Server 2009 and earlier are based on the .Net 2.0 CLR which runs .Net 2.0-3.5x.  CLR 2.0 uses %\Windows\Assembly for the CAC location.

BizTalk Server 2010 and later are based on the .Net 4.0 CLR.  CLR 4.0 uses %\Windows\Microsoft.Net\assembly.

To answer you specific questions:

  1. All BizTalk related assemblies should be in the GAC
  2. Just let deployment and/or MSI put the assembly in the right place, you may have CLR 2.0 referenced Assemblies which go in the legacy GAC.  Basically, don't worry about it.
  3. Visual Studio Deploy, BizTalk Administrator, gacutil.exe and .msi's will put the Assembly in the correct location based on it's version.  Again, don't worry about it.
  4. To generate complete .msi files, you have to add your additional Assemblies to the Resources folder in BizTalk Administrator separately.
January 29th, 2015 3:58am

Hi,

With .NET 4, there are now two potential locations: 

\Windows\assembly and \Windows\Microsoft.NET\assembly (with all of the various sub-directories beneath them).

However, "VS 2013 uses .Net 4.5 and Net 4.5 gac's the dlls into the new GAC location (C:\Windows\Microsoft.NET\assembly\GAC_MSIL\ProjectName\v4.5_\*.dll) wheras BizTalk uses GAC loc as C:\Windows\assembly folder for all the dlls"

In your VS solution, deploy the solution with Admin permission based on the following setting:

  • Application Name - setting for your application name
  • configuration data - BiztalkMgmtDb
  • Server - your BizTalk server
  • Install to Global Assembly cache - True
  • Restart host instance - True

Thish should apply the assembly to GAC. 

Alternatively, you can use gacUtil for deploy assembly ( GacUtil.exe) but the ideal way is to properly install the DLL by using MSI or add manually the resource in BizTalk Administration Console, in the end you should restart the Host Instances. 

Free Windows Admin Tool Kit Click here and download it now
January 29th, 2015 7:40am

Dear Ashwin,

  Thanks for your response. Please see my below inline comments

  1. where(In which path) do i need to keep my non-biztalk assembly?

              you have mentioned BizTalk runtime uses C:\Windows\assembly folder for both BizTalk and non-BizTalk assemblies.

[My comment]:But the Biztalk project is create under framework 4.5, so in that case it should look for the assembly in C:\Windows\Microsoft.NET\assembly\GAC_MSIL  instead of C:\Windows\assembly, why at runtime it is looking for the assembly in C:\Windows\assembly?

2. Whether do i need to keep the Biztalk assembly C:\Windows\assembly also.

         [My comment]: Setting Install to Global Assembly Cache to true is not putting the Biztalk assembly to GAC(C:\Windows\assembly), even after using GacUtil.exe also it is not putting that into C:\Windows\assembly.

 All the Biztalk assemblies are still into the GAC pointing thepath C:\Windows\Microsoft.NET\assembly\GAC_MSIL

  I have tried  the following command prompt and it shows that successfully added:

And then I tried to see that dll but not able to find out in the assembly folder as well as through command line also.

Please let me know how can i Put that dll inside the GAC (C:\Windows\assembly).

Thanks,

Joy

January 29th, 2015 11:22pm

Hi Joy,

It was my mistake, BizTalk 2013 runtime look for assemblies in "C:\Windows\Microsoft.NET\assembly\GAC_MSIL" for both the Biztalk and non-BizTalk ones. So  in VS when you set "Install to Global Assembly Cache to true in project properties, its deployes the assemblies in "C:\Windows\Microsoft.NET\assembly\GAC_MSIL" and non-Biztalk assemblies has to be deployed in this folder using one of the mentioned methods.

Free Windows Admin Tool Kit Click here and download it now
January 30th, 2015 12:54am

For clarity:

BizTalk Server 2009 and earlier are based on the .Net 2.0 CLR which runs .Net 2.0-3.5x.  CLR 2.0 uses %\Windows\Assembly for the CAC location.

BizTalk Server 2010 and later are based on the .Net 4.0 CLR.  CLR 4.0 uses %\Windows\Microsoft.Net\assembly.

Not all Assemblies are in %\Windows\Microsoft.Net\assembly\GAC_MSIL because you can restrict the target to 32 or 64 bits.  Those would appear in GAC_32 or GAC_64.

If you want to find the location of a specific Assembly, from the root of the Windows drive:

dir /s MyAssemblyName.dll

Again, you should not have to worry about this.  The tools will put the Assembly in the correct location automatically.  In fact you can't influence this and shouldn't even try.

January 30th, 2015 2:40am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics