Background: I have a winforms app written in C# that converts xlsx files to csv by calling a 2nd entirely seperate application ConvertExcelTo.Exe from the command line.
Error Summary:
Application validation did not succeed. Unable to continue.
- Reference in the manifest does not match the identity of the downloaded assembly
ConvertExcelTo.exe.
- Source: System.Deployment
- How/Where do I edit the Manifest and References section?
- What do I have to change to make this install correctly without any errors??
Under References, ConvertExcelTo I have: Assembly ConvertExcelTo –
C:\Users\bmccarthy\Documents\Visual Studio 2008\Projects\CCP Utility 3-31-11\CCP Utility\bin\Debug\ConvertExcelTo.exe
Under References, ConvertExcelTo.vshost I have: {} Microsoft.VisualStudio.HostingProcess, EntryPoint, Base Types, Objects: ~Object(), Equals(object, object), Equals(object), GetHashCode(), GetType(), MemberwiseClone(), Object(), ReferenceEquals(object, object), ToString().
Full Error Details:
WARNINGS
* The manifest for this application does not have a signature. Signature validation
will be ignored.
* The manifest for this application does not have a signature. Signature validation
will be ignored.
ERROR DETAILS
Following errors were detected during this operation.
* [4/6/2011] System.Deployment.Application.InvalidDeploymentException(RefDefValidation)
- Reference in the manifest does not match the identity of the downloaded assembly
ConvertExcelTo.exe.
- Source: System.Deployment
- Stack trace:
at System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e)
at System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e)
at System.Deployment.Application.FileDownloader.OnModified()
at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next)
at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles()
at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState)
at System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options)
at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp)
at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc)
at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl)
at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state)
Here’s the code in MainForm.cs where I call the ConvertExcelTo.exe application:
//Process that creates all the xlsx files in temp folder to csv files.
Process convertFilesProcess = new Process();
// command prompt execution for Converting Files from XLSX to CSV
//convertFilesProcess.StartInfo.WorkingDirectory = ConfigurationSettings.AppSettings["WorkingDirectory"].ToString();
convertFilesProcess.StartInfo.FileName = "ConvertExcelTo.exe";
convertFilesProcess.StartInfo.Arguments = " " + tempfolder + "\\ " + "csv";
convertFilesProcess.StartInfo.UseShellExecute = false;
convertFilesProcess.StartInfo.CreateNoWindow = true;
convertFilesProcess.StartInfo.RedirectStandardInput = true;
convertFilesProcess.StartInfo.RedirectStandardOutput = true;
convertFilesProcess.StartInfo.RedirectStandardError = true;
convertFilesProcess.Start();
convertFilesProcess.WaitForExit();
StreamReader sOut = convertFilesProcess.StandardOutput;
StreamReader sErr = convertFilesProcess.StandardError;
sOut.Close();
sErr.Close();
Thanks for looking!
That’s not what you are doing, you are actually trying to load that EXE assembly. Twice, once through the visual studio hosting process version of the executable, relevant only when you debug an EXE. Again through the regular EXE. It’s a bit of a quirk in .NET that this is even possible, comes in handy in very select cases. Not here, the CLR is throwing a hissy fit at this.
Remove the assembly references you added. Use the Process class to start this program.