2011-04-13 80 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阻止程序进行自动变量转换,即隐式数据类型转换。

相关问题