2011-04-13 81 views
0

我已經繼承了我需要編譯的VB.NET應用程序,所以我可以在其上運行dokumentation。我第一次收到「Option Strict On禁止從x到y的隱式轉換」錯誤,因此我關閉了Project文件中的Option Strict選項。如果「Option Strict」關閉,爲什麼編譯失敗並顯示「Option Strict On」?

那麼,爲什麼我仍然失敗,同樣的錯誤信息?

+1

你可以發佈導致錯誤的行嗎? – 2011-04-13 19:56:59

+0

Dim ExceptionHandler As ExceptionHandler = Me.LoadControl(ConfigurationSettings.AppSettings(「PagesFolder」)&「ExceptionHandler.ascx」) – grefly 2011-04-13 20:06:49

回答

7

我第一次收到「Option Strict On禁止從x到y的隱式轉換」錯誤,所以我關閉了項目文件中的Option Strict選項。

與之相反,修復錯誤?請原諒我的諷刺,但你已經選擇了錯誤的修復:而不是禁用Option Strict應該修復編譯器指出的錯誤。畢竟,Option Strict的全部意義在於幫助使代碼更加健壯。

這就是說,有其控制Option Strict地方(和所有其他選項):

其控制項目默認
  1. Visual Studio的選項,
  2. 項目設置,
  3. web.config編譯器命令行,
  4. 以文件爲基礎,源代碼文件的頂部行。

檢查Option Strict是關閉的地方2,3和4,它是到位1(因爲轉向一般Option Strict Off是一個非常,非常糟糕的主意)。那麼問題應該消失了。

也嘗試在web.config中禁用設置明確。我這裏發生了肢體但根據forums.asp.net這可以通過添加直接在<configuration>節點內的下列來完成:

<system.codedom> 
    <compilers> 
     <compiler compilerOptions ="/optionstrict-" language="vb;vbs;visualbasic;vbscript" 
        extension=".vb" 
        type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
    </compilers> 
</system.codedom> 

...可能已經有一個<compiler>節點 - 修改。

+0

是正確的。請,請相信,請通過明確添加適當的投射操作來解決問題。 – magma 2011-04-13 20:01:01

+0

感謝您的迴應。首先關注,修復錯誤,不,我並不擔心這一點。只是想把它變成一個可建立的狀態,所以我可以運行它的文檔。第二個問題,項目文件選項嚴格關閉,文件級別選項S zones關閉,並且(良好的調用!)Web.Config沒有引用Option Strict。 – grefly 2011-04-13 20:03:58

+0

@magma - 感謝您的關注,這是一個已在生產中的遺留應用程序,我將重新編寫。無論在哪裏編譯的選項都已經存在並且正在運行,我只想將其記錄在當前狀態中。 – grefly 2011-04-13 20:05:21

0

Option Strict阻止程序進行自動變量轉換,即隱式數據類型轉換。

相關問題