Ver código fonte

fix the bug of reclassification function.

lizhongsys 4 anos atrás
pai
commit
d566f9bad6

+ 1 - 1
OTSCPP/OTSClassifyEngine/OTSClassifyEngine.vcxproj

@@ -72,7 +72,7 @@
     <ConfigurationType>DynamicLibrary</ConfigurationType>
     <UseDebugLibraries>true</UseDebugLibraries>
     <PlatformToolset>v142</PlatformToolset>
-    <CLRSupport>true</CLRSupport>
+    <CLRSupport>false</CLRSupport>
     <CharacterSet>MultiByte</CharacterSet>
     <UseOfMfc>Dynamic</UseOfMfc>
     <WholeProgramOptimization>true</WholeProgramOptimization>

+ 1 - 1
OTSCPP/OTSClrInterface/CommonClr/OTSParticleClr.cpp

@@ -160,7 +160,7 @@ namespace OTSCLRINTERFACE {
 	{
 		if (m_Particle != nullptr)
 		{
-			m_Particle->get()->SetClassifyId(a_cAveGray);
+			m_Particle->get()->SetAveGray(a_cAveGray);
 		}
 	}
 

+ 1 - 1
OTSCPP/OTSData/OTSData.vcxproj

@@ -76,7 +76,7 @@
     <PlatformToolset>v142</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <UseOfMfc>Dynamic</UseOfMfc>
-    <CLRSupport>true</CLRSupport>
+    <CLRSupport>false</CLRSupport>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">

+ 3 - 2
OTSCPP/OTSImagePro/OTSImagePro.vcxproj

@@ -33,7 +33,8 @@
     <WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
     <Keyword>MFCDLLProj</Keyword>
     <ProjectName>OTSImagePro</ProjectName>
-    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
+    <TargetFrameworkVersion>
+    </TargetFrameworkVersion>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -75,7 +76,7 @@
     <CharacterSet>MultiByte</CharacterSet>
     <UseOfMfc>Dynamic</UseOfMfc>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CLRSupport>true</CLRSupport>
+    <CLRSupport>false</CLRSupport>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>

+ 5 - 5
OTSCPP/OTSImagePro/OTSImageProcess.cpp

@@ -1756,7 +1756,7 @@ namespace OTSIMGPROC
 			/*COTSImageProcess::BErode3(pPixel, pTempImg, 5, nHeightImg, nWidthImg);
 			COTSImageProcess::BDilate3(pTempImg, pPixel, 5, nHeightImg, nWidthImg);*/
 			Mat cvcopyImg = Mat(nHeightImg, nWidthImg, CV_8UC1, pPixel);// use the medianblur method to achieve the same effect as open morphology(errod and dialate).
-			medianBlur(cvcopyImg, cvcopyImg, 5);
+			medianBlur(cvcopyImg, cvcopyImg, 3);
 			pPixel = cvcopyImg.data;
 		a_pBinImgOut->SetImageData(pPixel, nWidthImg, nHeightImg);
 
@@ -1815,8 +1815,8 @@ namespace OTSIMGPROC
 					pPixel[i] = 0;
 				}
 			}
-			COTSImageProcess::BErode3(pPixel, pTempImg, 5, nHeightImg, nWidthImg);
-			COTSImageProcess::BDilate3(pTempImg, pPixel, 5, nHeightImg, nWidthImg);
+			COTSImageProcess::BErode3(pPixel, pTempImg, 3, nHeightImg, nWidthImg);
+			COTSImageProcess::BDilate3(pTempImg, pPixel, 3, nHeightImg, nWidthImg);
 			Mat cvcopyImg = Mat(nHeightImg, nWidthImg, CV_8UC1, pPixel);// use the medianblur method to achieve the same effect as open morphology(errod and dialate).
 			medianBlur(cvcopyImg, cvcopyImg, 5);
 			pPixel = cvcopyImg.data;
@@ -1879,8 +1879,8 @@ namespace OTSIMGPROC
 			default:
 				break;
 			}
-			COTSImageProcess::BErode3(pPixel, pTempImg, 5, nHeightImg, nWidthImg);
-			COTSImageProcess::BDilate3(pTempImg, pPixel, 5, nHeightImg, nWidthImg);
+			COTSImageProcess::BErode3(pPixel, pTempImg, 3, nHeightImg, nWidthImg);
+			COTSImageProcess::BDilate3(pTempImg, pPixel, 3, nHeightImg, nWidthImg);
 			Mat cvcopyImg = Mat(nHeightImg, nWidthImg, CV_8UC1, pPixel);
 			medianBlur(cvcopyImg, cvcopyImg, 5);
 			pPixel = cvcopyImg.data;

+ 5 - 4
OTSCPP/OTSLog/OTSLog.vcxproj

@@ -73,7 +73,7 @@
     <PlatformToolset>v142</PlatformToolset>
     <CharacterSet>MultiByte</CharacterSet>
     <UseOfMfc>Dynamic</UseOfMfc>
-    <CLRSupport>true</CLRSupport>
+    <CLRSupport>false</CLRSupport>
     <WholeProgramOptimization>true</WholeProgramOptimization>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
@@ -229,14 +229,15 @@
     <ClCompile>
       <PrecompiledHeader>Use</PrecompiledHeader>
       <WarningLevel>Level3</WarningLevel>
-      <Optimization>MaxSpeed</Optimization>
+      <Optimization>MinSpace</Optimization>
       <PreprocessorDefinitions>_WINDOWS;NDEBUG;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <SDLCheck>true</SDLCheck>
       <PrecompiledHeaderFile>Logstdafx.h</PrecompiledHeaderFile>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
-      <IntrinsicFunctions>true</IntrinsicFunctions>
-      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <IntrinsicFunctions>false</IntrinsicFunctions>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
       <SupportJustMyCode>true</SupportJustMyCode>
+      <BasicRuntimeChecks>Default</BasicRuntimeChecks>
     </ClCompile>
     <Link>
       <SubSystem>Windows</SubSystem>

+ 1 - 1
OTSCPP/OTSSQLiteDll/OTSSQLiteDll.vcxproj

@@ -70,7 +70,7 @@
     <CharacterSet>MultiByte</CharacterSet>
     <UseOfMfc>Dynamic</UseOfMfc>
     <WholeProgramOptimization>true</WholeProgramOptimization>
-    <CLRSupport>true</CLRSupport>
+    <CLRSupport>false</CLRSupport>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
     <ConfigurationType>DynamicLibrary</ConfigurationType>

+ 2 - 4
OTSIncAMeasureApp/0-OTSModel/Measure/3-MeasureFlow/CSmplMsrResult.cs

@@ -661,7 +661,7 @@ namespace OTSModelSharp
         
             Dictionary<int, List<COTSParticleClr>> mapTypeParticles = new Dictionary<int, List<COTSParticleClr>>();
             
-            Dictionary<List<int>, List<COTSSegmentClr>> AllSegments = new Dictionary<List<int>, List<COTSSegmentClr>>();
+            Dictionary<string, List<COTSSegmentClr>> AllSegments = new Dictionary<string, List<COTSSegmentClr>>();
             if (SegmentDB.GetAllSegmentsRecord(AllSegments))
             {
                 int nCol;
@@ -674,9 +674,7 @@ namespace OTSModelSharp
                     foreach (var part in parts)
 
                     {
-                        List<int> fldvec = new List<int>();
-                        fldvec.Add(fldId);
-                        fldvec.Add(part.GetTagId());
+                      
 
                         var itr = AllSegments.Values;
 

+ 11 - 9
OTSIncAMeasureApp/0-OTSModel/Measure/DBDataTransition/ElementChemistryDB.cs

@@ -239,16 +239,17 @@ namespace OTSModelSharp.DTLBase
        public List<CPosXrayClr> ReadXrayPointInfoList(DataTable a_query)
         {
             List<CPosXrayClr> xrayList = new List<CPosXrayClr>();
-            Dictionary<List<int>, CPosXrayClr> mapXrayInfo = new Dictionary<List<int>, CPosXrayClr>();
+            Dictionary<string, CPosXrayClr> mapXrayInfo = new Dictionary<string, CPosXrayClr>();
             foreach (DataRow row in a_query.Rows)
             {
                int nCol = (int)CElementChemistryTable.ColumnID.N_FIELD_ID- (int)CElementChemistryTable.ColumnID.MIN;
                 int curFldId = Convert.ToInt32(row[nCol]);
                 nCol = (int)CElementChemistryTable.ColumnID.N_XRAY_INDEX - (int)CElementChemistryTable.ColumnID.MIN;
                 int xrayId = Convert.ToInt32(row[nCol]);
-                List<int> fldvec = new List<int>();
-                fldvec.Add(curFldId);
-                fldvec.Add(xrayId);
+                string fldvec = "";
+                fldvec+=curFldId.ToString();
+                fldvec += "_";
+                fldvec += xrayId.ToString();
                
                 nCol = (int)CElementChemistryTable.ColumnID.S_NAME - (int)CElementChemistryTable.ColumnID.MIN;
                 string cheName = Convert.ToString(row[nCol]);
@@ -280,19 +281,20 @@ namespace OTSModelSharp.DTLBase
             return xrayList;
             
         }
-      public  bool GetAllMapedXrayInfo(ref Dictionary<List<int>, CPosXrayClr> mapXrayInfo)
+      public  bool GetAllMapedXrayInfo(ref Dictionary<string, CPosXrayClr> mapXrayInfo)
         {
             DataTable a_query = GetTableQueryForDataTable();
-            //Dictionary<List<int>, CPosXrayClr> mapXrayInfo = new Dictionary<List<int>, CPosXrayClr>();
+            //Dictionary<string, CPosXrayClr> mapXrayInfo = new Dictionary<string, CPosXrayClr>();
             foreach (DataRow row in a_query.Rows)
             {
                 int nCol = (int)CElementChemistryTable.ColumnID.N_FIELD_ID - (int)CElementChemistryTable.ColumnID.MIN;
                 int curFldId = Convert.ToInt32(row[nCol]);
                 nCol = (int)CElementChemistryTable.ColumnID.N_XRAY_INDEX - (int)CElementChemistryTable.ColumnID.MIN;
                 int xrayId = Convert.ToInt32(row[nCol]);
-                List<int> fldvec = new List<int>();
-                fldvec.Add(curFldId);
-                fldvec.Add(xrayId);
+                string fldvec = "";
+                fldvec += curFldId.ToString();
+                fldvec += "_";
+                fldvec += xrayId.ToString();
 
                 nCol = (int)CElementChemistryTable.ColumnID.S_NAME - (int)CElementChemistryTable.ColumnID.MIN;
                 string cheName = Convert.ToString(row[nCol]);

+ 2 - 1
OTSIncAMeasureApp/0-OTSModel/Measure/DBDataTransition/IncADataDB.cs

@@ -139,7 +139,8 @@ namespace OTSModelSharp
                     Rectangle r = new Rectangle(left, top, left + width, top + height);
                     p.SetParticleRect(r);
                     p.SetSubParticles("");
-                    p.SetAveGray(Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]));
+                    byte aveGray = Convert.ToByte(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_AVE_GRAY]);
+                    p.SetAveGray(aveGray);
                     p.SetArea(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_AREA]));
                     p.SetAnalysisId(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.N_XRAY_ID]));
                     p.SetDMAX(Convert.ToInt32(allRecords.Rows[i][(int)CIncADataTable.ColumnID.F_DMAX]));

+ 7 - 6
OTSIncAMeasureApp/0-OTSModel/Measure/DBDataTransition/SegmentDB.cs

@@ -352,18 +352,19 @@ namespace OTSModelSharp
 
       
 
-        public  bool GetAllSegmentsRecord(Dictionary<List<int>, List<COTSSegmentClr>> mapSegments)
+        public  bool GetAllSegmentsRecord(Dictionary<string, List<COTSSegmentClr>> mapSegments)
         {                  
             var allRecords = this.GetQueryOfAllRecord();
             for (int i = 0; i < allRecords.Rows.Count; i++)
             {
                 int curFldId = Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_FIELD_ID]);
                 int curParticleId = Convert.ToInt32(allRecords.Rows[i][(int)CSegmentTable.ColumnID.N_PARTICLE_ID]);
-                List<int> fldvec = new List<int>();
-                fldvec.Add(curFldId);
-                fldvec.Add(curParticleId);
-                //var itr = mapSegments.ContainsKey(fldvec);                   
-                if (mapSegments.ContainsKey(fldvec))
+                string fldvec = "";
+                fldvec+=curFldId.ToString();
+                fldvec += "_";
+                fldvec += curParticleId.ToString();
+            //var itr = mapSegments.ContainsKey(fldvec);                   
+            if (mapSegments.ContainsKey(fldvec))
                 {
                     List<COTSSegmentClr> segments = mapSegments[fldvec];
                     COTSSegmentClr segment = new COTSSegmentClr();

+ 10 - 8
OTSIncAMeasureApp/0-OTSModel/Measure/DBDataTransition/XRayDataDB.cs

@@ -60,16 +60,17 @@ namespace OTSModelSharp
        public  bool ReadXrayListFromAQuery(DataTable a_query,ref List<CPosXrayClr> a_XrayList)
         {
            
-            Dictionary<List<int>, CPosXrayClr> mapXrayInfo = new Dictionary<List<int>, CPosXrayClr>();
+            Dictionary<string, CPosXrayClr> mapXrayInfo = new Dictionary<string, CPosXrayClr>();
             foreach (DataRow row in a_query.Rows)
             {
                 int nCol = (int)CXRayDataTable.ColumnID.N_FIELD_ID - (int)CXRayDataTable.ColumnID.MIN;
                 int curFldId = Convert.ToInt32(row[nCol]);
                 nCol = (int)CXRayDataTable.ColumnID.N_INDEX - (int)CXRayDataTable.ColumnID.MIN;
                 int xrayId = Convert.ToInt32(row[nCol]);
-                List<int> fldvec = new List<int>();
-                fldvec.Add(curFldId);
-                fldvec.Add(xrayId);
+                string fldvec = "";
+                fldvec+=curFldId.ToString();
+                fldvec += "_";
+                fldvec += xrayId.ToString();
                 nCol = (int)CXRayDataTable.ColumnID.N_XRAY_DATA - (int)CXRayDataTable.ColumnID.MIN;
 
                 byte[] xraydata = (byte[])row[nCol];
@@ -115,7 +116,7 @@ namespace OTSModelSharp
         }
 
       
-       public bool GetAllMapedXrayData(ref Dictionary<List<int>, CPosXrayClr> mapXrayInfo)
+       public bool GetAllMapedXrayData(ref Dictionary<string, CPosXrayClr> mapXrayInfo)
         {
             var t = GetTableInfo();
             var query = GetTableQueryForDataTable(t.GetTableName());
@@ -125,9 +126,10 @@ namespace OTSModelSharp
                 int curFldId = Convert.ToInt32(row[nCol]);
                 nCol = (int)CXRayDataTable.ColumnID.N_INDEX - (int)CXRayDataTable.ColumnID.MIN;
                 int xrayId = Convert.ToInt32(row[nCol]);
-                List<int> fldvec = new List<int>();
-                fldvec.Add(curFldId);
-                fldvec.Add(xrayId);
+                string fldvec = "";
+                fldvec+=curFldId.ToString();
+                fldvec+="_";
+                fldvec += xrayId.ToString();
                 nCol = (int)CXRayDataTable.ColumnID.N_XRAY_DATA - (int)CXRayDataTable.ColumnID.MIN;
 
                 byte[] xraydata = (byte[])row[nCol];

+ 42 - 35
OTSIncAMeasureApp/0-OTSModel/Measure/ParamData/COTSMsrPrjResultData.cs

@@ -275,7 +275,7 @@ namespace OTSModelSharp
             m_IncADataDB.GetAllFieldsRecord(ref allFlds);
 
             var eleChemistryDB = incAFileMgr.GetPosXrayDBMgr().GetElementChemistryDB();
-             Dictionary<List<int>, CPosXrayClr> mapXrayInfo=new Dictionary<List<int>, CPosXrayClr>();
+             Dictionary<string, CPosXrayClr> mapXrayInfo=new Dictionary<string, CPosXrayClr>();
             eleChemistryDB.GetAllMapedXrayInfo(ref mapXrayInfo);
             foreach (var f in allFlds)
             {
@@ -283,9 +283,10 @@ namespace OTSModelSharp
                 {
                     int curFldId = f.GetId();
                     int xrayId = p.GetAnalysisId();
-                    List<int> fldvec=new List<int>();
-                    fldvec.Add(curFldId);
-                    fldvec.Add(xrayId);
+                    string fldvec="";
+                    fldvec+=curFldId.ToString();
+                    fldvec+="_";
+                    fldvec += xrayId.ToString();
                     //auto cXray = mapXrayInfo.find(fldvec);
                     if (mapXrayInfo.ContainsKey(fldvec))
                     {
@@ -298,7 +299,7 @@ namespace OTSModelSharp
 
 
             var xrayDataDBDB = incAFileMgr.GetPosXrayDBMgr().GetXrayDataDB();
-            Dictionary<List<int>, CPosXrayClr> mapXrayData=new Dictionary<List<int>, CPosXrayClr>();// map structure:[(fieldId,xrayId),CPosXrayPtr],every element of this map represent one unique xraydata.
+            Dictionary<string, CPosXrayClr> mapXrayData=new Dictionary<string, CPosXrayClr>();// map structure:[(fieldId,xrayId),CPosXrayPtr],every element of this map represent one unique xraydata.
             xrayDataDBDB.GetAllMapedXrayData(ref mapXrayData);
             foreach (var f in allFlds)
             {
@@ -306,9 +307,10 @@ namespace OTSModelSharp
                 {
                     int curFldId = f.GetId();
                     int xrayId = p.GetAnalysisId();
-                    List<int> fldvec=new List<int>();
-                    fldvec.Add (curFldId);
-                    fldvec.Add (xrayId);
+                    string fldvec="";
+                    fldvec+=curFldId.ToString();
+                    fldvec += "_";
+                    fldvec += xrayId.ToString();
                     //auto cXray = mapXrayData.find(fldvec);
                     if (mapXrayData.ContainsKey(fldvec))
                     {
@@ -331,7 +333,7 @@ namespace OTSModelSharp
            Dictionary<int, List<COTSParticleClr>> mapTypeParticles = new Dictionary<int,List<COTSParticleClr>>();//record typeId relevants particlelist;
 
             List<COTSSegmentClr> AllSegments = new List<COTSSegmentClr>();
-            Dictionary<List<int>, List<COTSSegmentClr>> mapSegments = new Dictionary<List<int>, List<COTSSegmentClr>>();
+            Dictionary<string, List<COTSSegmentClr>> mapSegments = new Dictionary<string, List<COTSSegmentClr>>();
             if (SegmentDB.GetAllSegmentsRecord(mapSegments))
             {
                
@@ -341,9 +343,10 @@ namespace OTSModelSharp
                     List<COTSParticleClr> parts = fld.GetListAnalysisParticles();
                     foreach (var part in parts)
                     {
-                        List<int> fldvec = new List<int>();
-                        fldvec.Add(fldId);
-                        fldvec.Add(part.GetTagId());
+                        string fldvec = "";
+                        fldvec+=fldId.ToString();
+                        fldvec += "_";
+                        fldvec+=part.GetTagId().ToString();
 
                        
                         if (mapSegments.ContainsKey(fldvec))
@@ -383,6 +386,7 @@ namespace OTSModelSharp
 
                 status.SetCompletedFieldsCenter(completedflds);
                 status.SetCompletedFields(completedflds.Count);
+
                 DateTime timeStart, timeEnd;
                 try
                 {
@@ -398,6 +402,7 @@ namespace OTSModelSharp
                 status.SetEndTime(timeEnd);
                 status.SetUsedTime(timeEnd - timeStart);
                 status.SetStatus((OTS_MSR_SAMPLE_STATUS)Convert.ToInt32(strRstStatus));
+
                 //get MsrResults data from map.
                 List<CMsrResultItem> rstItms = new List<CMsrResultItem>();
                 double allPartArea = 0;
@@ -1424,7 +1429,7 @@ namespace OTSModelSharp
 
             foreach (var spl in m_listSamples)
             {
-              
+
                 //get the parameter MsrParam object
                 CSampleParam pMsrParam = spl.GetMsrParams();
                 string stdFileName = pMsrParam.GetSTDName();
@@ -1434,31 +1439,33 @@ namespace OTSModelSharp
                 }
 
                 string filename = strFilePath + "\\" + spl.GetName() + "\\" + spl.GetName() + ".rst";
-                //获取测量项目文件
-                XmlDocument doc = new XmlDocument();
-                //载入xml文件
-                doc.Load(filename);
-              
-                pMsrParam.SetSTDName(stdFileName);
-                XmlNode root = doc.SelectSingleNode("XMLData");
-                root.RemoveAll();
-                Serialize(true, doc, root);
-              
+                ////获取测量项目文件
+                //XmlDocument doc = new XmlDocument();
+                ////载入xml文件
+                //doc.Load(filename);
 
+                //pMsrParam.SetSTDName(stdFileName);
+                //XmlNode root = doc.SelectSingleNode("XMLData");
+                //root.RemoveAll();
+                //spl.Serialize(true, doc, root);
 
-                //string imgpath = filename.GetBuffer(0);
-                //const char* file = imgpath.c_str();
-                //tinyxml2::XMLDocument doc;
-                //if (doc.LoadFile(file) != 0)
-                //{
 
-                //    return NULL;
-                //}
-                //tinyxml2::XMLElement* root = doc.RootElement();
-                //std::string sem = "Sample";
-                //tinyxml2::XMLElement* member = queryUserNodeByName(root, sem);
-                //tinyxml2::XMLElement* member1 = queryUserNodeByName(member, "MsrParams");
-                //member1->SetAttribute("STDName", stdFileName);
+
+                //string imgpath = filename;
+                //const string file = imgpath;
+                XmlDocument doc=new XmlDocument();
+                doc.Load(filename);
+
+                XmlNode  root = doc.SelectSingleNode("XMLData");
+                string sem = "Sample";
+               var members = root.SelectNodes(sem);
+                foreach (XmlNode member1 in members)
+                {
+                    var paramNode = member1.SelectSingleNode("MsrParams");
+
+                      ((XmlElement)paramNode).SetAttribute("STDName",stdFileName);
+                }
+                
                 doc.Save(filename);
 
                 //get the steel technology parameter

+ 3 - 1
OTSIncAReportTemplate/OTSIncAReportTemplate.Designer.cs

@@ -1,4 +1,6 @@
-namespace OTSIncAReportTemplate
+
+
+namespace OTSIncAReportTemplate
 {
     partial class OTSIncAReportTemplate
     {

+ 2 - 1
OTSIncAReportTemplate/OTSIncAReportTemplate.csproj

@@ -88,7 +88,8 @@
       <HintPath>..\Bin\x64\Release_oxford50\RM.Interop.ReportMachine.dll</HintPath>
       <EmbedInteropTypes>True</EmbedInteropTypes>
     </Reference>
-    <Reference Include="RM.ReportEngine">
+    <Reference Include="RM.ReportEngine, Version=1.0.0.0, Culture=neutral, processorArchitecture=x86">
+      <SpecificVersion>False</SpecificVersion>
       <HintPath>..\Bin\x64\Release_oxford50\RM.ReportEngine.dll</HintPath>
     </Reference>
     <Reference Include="System">