Wednesday, April 14, 2010

VS 2008 .NET 3.5 Integration Error: Application has failed to start because the application configuration is incorrect

I just deployed a new .NET integration for Dynamics GP, and when I tried to launch the application on the client's server, I received this message:



"This application has failed to start because the application configuration is incorrect. Reinstalling the application may fix this problem."

These errors appeared in the Event log:


"Syntax error in manifest or policy file"


"The application failed to launch because of an invalid manifest."


Since I have successfully deployed other .NET integrations on this server, I realized that this one was a little different. My prior integrations were developed with Visual Studio 2005 and .NET 2.0. Because this new integration utilizes the .NET LINQ extensions, and I used Visual Studio 2008 and .NET 3.5.

Based on a search of the error, it seems that it can be caused by several completely different reasons. Sometimes it is due to missing C++ service packs, sometimes it is due to an issue with the XML configuration file.

In my case, the server is a Windows Server 2003 machine, and it does have .NET 3.5 SP1 installed, so it didn't seem that the server resources were the issue. After further digging, I came across a blog post that discussed the error.

It turns out that the error is caused by the Manifest setting in Visual Studio 2008. When it embeds the manifest in the application, this appears to sometimes cause issues on older (non-UAC) operating systems.

Changing the manifest setting to "Create application without a manifest" resolved the issue for me.




MSDN provides the following information about the Manifest setting. When they say "earlier applications", I'm assuming that also means "earlier operating systems".

http://msdn.microsoft.com/en-us/library/ms247046(VS.90).aspx

Manifest

Selects a manifest generation option when the application runs on Windows Vista under User Account Control (UAC). This option can have the following values:

Embed manifest with default settings. Supports the typical manner in which Visual Studio operates on Windows Vista, which is to embed security information in the application's executable file, specifying that requested ExecutionLevel be AsInvoker. This is the default option.

Create application without a manifest. This method is known as virtualization.Use this option for compatibility with earlier applications.

No comments: