2010-05-05 38 views
1

我有一個VB.Net 1.1應用程序在Visual Studio中編譯後工作得很好。但是,我想使用ILMerge將所有引用的程序集合併到一個可執行文件中,以便更輕鬆地移動。之後,我通過ILMerge發送,並嘗試運行它,我得到的錯誤在VB.NET程序集中強名稱驗證失敗

「強名稱驗證失敗assembly.exe」 .....

但沒有我的東西是強命名!我在這裏看到了這個帖子:Strong Name Validation Failed並試圖通過「SN.EXE -Vr merged.exe」運行它,但是這給了我這個錯誤:

「merged.exe並不代表強命名程序集」

有其他人之前有過這個問題嗎?我如何解決它?

UPDATE:

我開始覺得自己像強名稱驗證是不是真正的問題在這裏。我構建的是.NET v1.1,並在安裝了唯一的.NET版本的機器上運行(恰好是Windows 2003)。合併的可執行文件似乎在我嘗試的每臺Windows 2003計算機上都會出現此錯誤,但如果我嘗試在更現代的操作系統(Vista)上運行它,它至少會啓動,但這不是一個很好的測試,因爲環境不是適合真正的測試。

  • 我已經驗證了我的app.config有正確的設置(指定要求和V1.1.4322的支持的運行時版本)
  • 我通過ILMerge運行我的程序集時,使用/targetplatform:v1.1選項。

ILMerge肯定會導致問題(即它在我合併之前工作正常),我只是不知道如何解決它。

+0

記錄您使用的參考文獻。在解決方案資源管理器中單擊「顯示所有文件」圖標並打開「引用」節點。 – 2010-05-05 12:49:49

+0

我所引用的是COM互操作程序集和標準系統程序集。我不內化Interop程序集,只有作爲此項目一部分的程序集(一個可執行文件和DLL),兩者都沒有簽名。沒有任何引用的程序集都被簽名(Core .NET程序集除外;但是,我沒有內化這些程序集)。 – 2010-05-05 13:01:37

回答

1

爲了讓我的合併二進制文件能夠正常工作,我必須找到並下載一個非常舊版本的ILMerge(v1.1);當前ILMerge應用程序構建.NET 1.1程序集的方式中必定存在一個錯誤。謝天謝地,我們內部有一個,因爲我可能從來沒有在網上找到它。

相關問題