jkavx
asked on
C# using DtSearch API
I'm deploying a C# application that uses DtSearch on a number of different machines. I'm finding that when the app is built with dtsearchNetApi.dll, it runs successfully on Windows XP machines but not Windows 2003 machines. When the app is built with dtsearchNetApi2.dll, it runs on Windows 2003 machines but not Windows XP machines. The failure occurs when trying to execute a method on an instance of a class that uses dtSearch.Engine ("using dtSearch.Engine;"). So something like this:
IndexReader ir = new IndexReader(lstItems); // OK
ir.ReadIndexes(); // Fails
System.IO.FileNotFoundExce ption: The specified module could not be found. (Exception from HRESULT: 0x8007007E)
The app is deployed with ClickOnce, and either dtsearchNetApi.dll or dtsearchNetApi2.dll is included in the Application Files on the Publish tab. The main dtSearch library - dten600.dll - is registered on all machines.
IndexReader ir = new IndexReader(lstItems); // OK
ir.ReadIndexes(); // Fails
System.IO.FileNotFoundExce
The app is deployed with ClickOnce, and either dtsearchNetApi.dll or dtsearchNetApi2.dll is included in the Application Files on the Publish tab. The main dtSearch library - dten600.dll - is registered on all machines.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
If I put msvcr71.dll in the directory of the executable, I can use dtsearchNetApi.dll on a Windows 2003 machine. This link "http://support.dtsearch.com/dts0197.htm" includes this:
"You may also be missing one or more of the Microsoft runtime library DLLs. For dtSearchNetApi.dll, msvcr71.dll is required. For dtSearchNetApi2.dll the MFC 8.0 and CRT 8.0 merge modules are required."
But using ClickOnce for deployment, I'm not sure how to include this dll in the deployment package. I've put it in the compile directory, and included it in the project (Show all files in the solution explorer and right click on include). Then I set the properties of the included dll to "Build Action: None and CopyToOutputDirectory: CopyAlways." But on the Publish tab, which I click on Application Files, the dll does not appear. Am I missing a step here, or not setting the properties correctly?
"You may also be missing one or more of the Microsoft runtime library DLLs. For dtSearchNetApi.dll, msvcr71.dll is required. For dtSearchNetApi2.dll the MFC 8.0 and CRT 8.0 merge modules are required."
But using ClickOnce for deployment, I'm not sure how to include this dll in the deployment package. I've put it in the compile directory, and included it in the project (Show all files in the solution explorer and right click on include). Then I set the properties of the included dll to "Build Action: None and CopyToOutputDirectory: CopyAlways." But on the Publish tab, which I click on Application Files, the dll does not appear. Am I missing a step here, or not setting the properties correctly?
ASKER
I find that I can include the dll by: Project\Add Existing Item, select the dll that was added, and change CopytoOutputDirectory to CopyAlways (Build Action will be set to Content).
ASKER
The dten600.dll was not the issue. Msvcr71.dll needed to be added for dtsearchNetApi.dll to work on the Windows 2003 server.
ASKER