Description

When packaging assemblies, during the extraction, below warning messages are triggered :

WARNING The DLL extractor has returned an not mapped error when extracting \\...\lib\...\Newxxx.Json.dll

Observed in CAST AIP
Release
Yes/No
8.1.x(error)
8.0.x (error)
7.3.x(tick)
Observed on RDBMS
RDBMS
Yes/No
Oracle Server(tick)
Microsoft SQL Server(tick)
CSS2(tick)
Step by Step Scenario
  1. Create a ".NET assemblies on your file system" package that points to the assemblies location.
  2. Package the ".NET assemblies on your file system".
  3. Open the Extraction.castlog2 file

  

Action Plan

This issue occurs when the .NET extractor is not able to find the depencies between assemblies.

  1. In the DMT package windows, go to the extraction step and open the Extraction.castlog2, and check the name of the dll files involved in the warning.
  2. Check if .NET assemblies are in the delivery machine (local machine) or in the network.
    1. If the assemblies are in the network
      1. The assemblies have to be in the same folder.
      2. If the issue is still there for some assemblies, check the .NET security policy.
      3. If the security policy is very low, check the dependency.
    2. If the assemblies are in the Delivery machine
      1. Put all the assemblies in the same folder.
      2. If the issue is still there for some assemblies, check the dependency. 

  

Solution

This warning message occurs when the .NET extractor is not able to find the dependencies between assemblies.To make the extractor works correctly, you have to:

Check if .NET assemblies are in the delivery machine (local machine) or in the network

If the assemblies are in the network

Assemblies have to be in one folder

Put all the assemblies in the same folder, then, it will be easy for the extractor to find the dependencies.

If Issue is still there, check the security policy

If the issue is still there, check the .NET Security Policy. The .NET extractor has to open and read the assemblies. If the security policy is high, it prevents the extractor to open the assemblies, and then, to get the dependencies. If the customer needs to keep the assemblies on network, he must reduce the .NET security policy.

If Issue is still there even if the security policy is low, check the dependencies

If the security policy is already low, and the assemblies are in only one folder, check the dependencie of the assemblies triggered with the warning.

To check the dependencies, run the .NET Extractor manualy :

Run the .NET extractor manually

Run the .NET extractor manually.

To run the .NET extractor manually, do as follows :

1- Create the input.config file. This file contains the path to the assembly you want to extract. The template is shown below :

<?xml version='1.0' encoding='utf-8' ?>
<Assemblies>
  <ToRead>
    <Assembly path="D:\Example_of_path\location_of_the_assemblies\net40\TheAssemblytoExtract.dll">
      <ReferenceDir path="D:\Example_of_path\location_of_the_assemblies\net40\"/>
    </Assembly>
  </ToRead>
</Assemblies>

 

2- Run the .NET extractor as shown below :

C:\Program Files (x86)\CAST\7.3>CAST.DotNet.AssemblyExtractor-4.0.exe x -e D:\tmp\Extractor\input.config

There are 4 .NET extractor, if there is an inconsistency in the extractor version, you can replace "CAST.DotNet.AssemblyExtractor-4.0" by the following extractor :

CAST.DotNet.AssemblyExtractor-2.0
CAST.DotNet.AssemblyExtractor-1.1
CAST.DotNet.AssemblyExtractor-1.0

3- The results of the extractor will be as below

If there is dependencies that are missing, you will get the following message :

WARNING Failed to load a type from assembly ':\Example_of_path\location_of_the_assemblies\net40\Microsoft.Data.OData.dll, [Microsoft.Data.OData, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad3
64e35]', reason: 'Could not load file or assembly 'Microsoft.Data.Edm, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. General Exception (Exception from HRESULT: 0x80131500)'

If the assemblies are in the Delivery machine

Assemblies have to be in one folder

Put all the assemblies in the same folder, then, it will be easy for the extractor to find the dependencies.

If the Issue is still there, check the dependencies

If the assemblies are already in one folder, check the dependencie of the assemblies triggered with the warning by running the .NET extractor manually as explained in the Run the .NET extractor manually paragraph

 

 

Notes/comments

Ticket # 5531

Related Pages