2013-04-01 78 views
3

我正在將VS 2010中的C++/CLI混合模式可執行文件更新爲VS 2012.我們的目標是.NET 4.5和VS2012工具集。如何解決SHIM_NOVERSION_FOUND錯誤信息

它在Debug版本中完美地構建和運行,但Release版本立即退出並顯示「此應用程序無法啓動。」和鏈接,該鏈接轉到Microsoft Support page,表明問題是SHIM_NOVERSION_FOUND

問題頁面指出:「您無法自行解決配置問題,請聯繫應用程序供應商以解決問題。」作爲有問題的應用程序供應商,我很難發現有關如何糾正此應用程序的任何信息。

應用程序在哪裏可以發現C++項目中正確的.NET版本,以及如何將正確的信息添加到.vcxproj或Solution文件以使其正確構建?

+0

DO版本建立退出與錯誤,即使是構建應用程序的機器上? –

+0

@DavidYaw是的。我正在嘗試修復構建系統進行遷移,並在啓動時立即獲取(即使在Visual Studio中運行)。 –

+0

@CurtNichols我可以做到這一點,它改變了行爲,但不是「解決方案」。首先,出於某種原因,調試版本不需要這個(根據我的理解,不應該這樣做)。當這樣做時,發佈版本不再顯示錯誤,而是立即退出(如果我進入程序,甚至會在點擊第一行代碼之前)。看起來像msbuild沒有執行發佈構建一些必需的步驟,但我無法弄清楚爲什麼,並且vcxproj文件是巨大的... –

回答

3

我遇到了類似的問題,我不得不做兩件事:使用配置文件,並在目標機器上安裝Framework 4.0。 @CurtNichols指出了這個方向,但是最終把這一切都鏈接在一起:How to: Configure an Application to Support .NET Framework 4 or 4.5

下面是我結束了在app.config:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <startup> 
    <supportedRuntime version="v4.0"/> 
    </startup> 
</configuration> 

其實,花了相當多的步驟,從A點到達B點,所以這裏是「故事的其餘部分」:

  • 我開始得到一個「無法正確初始化」的錯誤,我通過在其上安裝了Framework 4.0,在我裝載XP的虛擬PC上糾正了這個錯誤。
  • 所以我嘗試在目標機器上安裝Framework 4.5(一個Windows 7盒)
  • 現在我得到SHIM_NOVERSION_FOUND錯誤。
  • 我嘗試安裝Framework 4.0,但當然這是多餘的,因爲4.5升級4.0。
  • 我嘗試安裝Framework 3.5,但安裝程序初始化,然後什麼也沒做。哎呀,我不知道3.5是包含在Windows 7中。
  • 所以我卸載了Framework 4.5。毫不奇怪,我回到「未能正確初始化」。
  • 另一個堆棧溢出後(我現在找不到,對不起)建議檢查Windows功能,確保「Microsoft Framework 3.5.1」完全啓用。在目標機器上,「Windows Communication Foundation」子選項未被選中。所以我檢查了他們......並得到了相同的結果。
  • 我安裝了Framework 4.0(我現在可以做,因爲我卸載了4.5)。可以肯定的是,我重新啓動了。仍然有像「無法找到運行時版本」的東西。
  • 現在,我終於放棄了,並添加了MSDN條目中引用的app.config設置。但首先,我試了一下這樣的,這是應該說我會被罰款3.5或4.0:

    <supportedRuntime version="v2.0.50727"/> 
    <supportedRuntime version="v4.0"/> 
    
  • 這是一個錯誤......可能是因爲我原來在4.0環境下編譯。我收到了「已停止工作」的錯誤。

  • 所以我擺脫了3.5規範(又名2.0.5xxx,因爲微軟),它的工作原理就好像我本來應該做的那樣。(它可能是。)

希望過程的細節幫助別人!

0

下面是我工作:

項目屬性>生成>目標平臺:任何CPU