This is a problem my coworkers and I have encountered several times without being able to track down the exact issue, and a very annoying and almost untestable one.
When testing a standalone application using ArcObjects, at the some point the license would end up corrupted and impossible to repair without contacting ESRI support.
A sample of the latest application in development that corrupted my license recently:
It follows the examples given on the support, but if there is something more to check or something that shouldn't be done, I woul be really glad to know what. The latest corruption happened while ArcMap was running in background, should it be avoided ? Is it a known issue or is there a way to check if the license is in use ?
When testing a standalone application using ArcObjects, at the some point the license would end up corrupted and impossible to repair without contacting ESRI support.
A sample of the latest application in development that corrupted my license recently:
Code:
[STAThread]
static void Main(string[] args)
{
AoInitialize arcObjectInitialize = null;
if (!ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop))
{
System.Console.WriteLine("This application could not load the correct version of ArcGIS.");
Environment.Exit(Environment.ExitCode);
}
try
{
arcObjectInitialize = new AoInitialize();
esriLicenseProductCode typeLicense;
if (arcObjectInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeBasic) == esriLicenseStatus.esriLicenseAvailable)
{
typeLicense = esriLicenseProductCode.esriLicenseProductCodeBasic;
arcObjectInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeBasic);
}
else
{
if (arcObjectInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeStandard) == esriLicenseStatus.esriLicenseAvailable)
{
typeLicense = esriLicenseProductCode.esriLicenseProductCodeStandard;
arcObjectInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard);
}
else
{
if (arcObjectInitialize.IsProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeAdvanced) == esriLicenseStatus.esriLicenseAvailable)
{
typeLicense = esriLicenseProductCode.esriLicenseProductCodeAdvanced;
arcObjectInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);
}
else
{
throw new Exception("ArcView");
}
}
}
}
catch
{
Console.WriteLine("No valid license found, exiting program.");
Environment.Exit(Environment.ExitCode);
}
//Some processings...
try
{
arcObjectInitialize.Shutdown();
}
catch
{
Console.WriteLine("License shutdown failed, exiting program.");
Environment.Exit(Environment.ExitCode);
}
}