2010-11-08 168 views
1

試圖在W7 64位上運行,在Visual C#2008 Express上使用.Net 3.5,我嘗試在Framework和Framework64文件夾中運行installutil.exe,兩者都拋出相同的錯誤。 3.5文件夾沒有installutil.exe和4.0兩個文件夾都不起作用。InstallUtil引發錯誤信息

在IDE中,沒有發佈版本,但發佈,他們是一樣的嗎?

我按照教程從這篇文章: http://www.switchonthecode.com/tutorials/creating-a-simple-windows-service-in-csharp

出了什麼問題?

D:\install>C:\Windows\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe setup.e 
xe 
Microsoft (R) .NET Framework Installation utility Version 2.0.50727.4927 
Copyright (c) Microsoft Corporation. All rights reserved. 

Exception occurred while initializing the installation: 
System.BadImageFormatException: Could not load file or assembly 'file:///D:\inst 
all\setup.exe' or one of its dependencies. The module was expected to contain an 
assembly manifest.. 
+0

有沒有人使用這個工作? – user1040975 2017-07-21 16:51:44

回答

4

System.BadIMageFormatException當嘗試加載一個64位的組件或本地DLL在一個32位的上下文或反之亦然通常發生。

如果您在64位版本的Windows上運行,還有一個目錄c:\windows\Microsoft.Net\Framework64\。嘗試在其中一個子目錄中找到的installutil。

另一個可能的問題是您正在運行InstallUtil而不是錯誤的程序集(.exe或.dll)。你正在運行setup.exe。在你所指的教程中沒有顯式的安裝程序。 InstallUtil針對MyWindowsService.exe運行。在本教程中,您將創建一個使用System.Configuration.Install命名空間的程序。 InstallUtil使用該名稱空間中的屬性[RunInstaller(true)]來查找程序集中的「安裝說明」,因此不需要單獨的安裝程序(setup.exe)。

你有沒有試過按照教程的第一個字母,然後用自己的代碼擴展它?

+0

我已經試過了。 – Proyb2 2010-11-08 07:02:39

+0

您是否也回顧我的第二個建議?你試圖在錯誤的對象上運行installutil? – 2010-11-08 07:05:46

+0

我是C#的新手,那麼這個建議是什麼意思呢?那麼我怎樣才能使用setup.exe以外的其他功能呢? – Proyb2 2010-11-08 07:13:31

2

在.NET 4中構建Windows服務並嘗試使用.NET v2目錄中的installutil.exe進行安裝時,您會遇到同樣的問題。您必須使用.NET v4目錄下的installutil.exe(Windows/Microsoft .NET Framework/v4.0.30319/installutil.exe)