VS2008开发环境中容易遇到的3个问题之解决办 转载之大音希声,大象无形……〖 csdn》...

本文解决VS2008中ASP.NET Web窗体设计视图无法加载的问题,包括控件ID不同步更新、IDE假死及注册表导致的设计视图假死等问题,并提供了解决方案。

filename.aspx.designer.cs 中控件ID不同步更新修改的问题:

 

 

当我们在aspx的源代码界面下工作时,有时修改了一些控件label啊textbox等的ID,在cs代码中并不能由VS智能感知到这些控件。

打开对应的XXX.aspx.designer.cs,才发现这些控件的ID并没有自动修改为我们在aspx源码中所写的。

 

如果再在XXX.aspx.designer.cs中重改一遍,肯定是麻烦且易出错的。

经过一番尝试,可以通过将aspx从源代码视图切换到“视图设计器”,一般可以解决此问题。某些顽固的,可以切换后,再保存,并重启VS。

 

 

外,在VS2008中切换到视图设计器导致IDE假死无响应的问题,目前有两种办法:

 

====1====

vs 2008 不能切换到设计视图的解决办法

家里电脑上安装了vs2008,之前没装其他版本的vs,最近在使用webform窗体的时候发现不能切换到设计视图了,一点切换vs就卡死,网

 

上搜索了一下 除了重装vs2008 没有发现其他解决办法,发现vs2005也有这个问题,vs2005的解决办法是

 

http://www.cnblogs.com/abeen/archive/2007/02/04/639871.html

对vs2008不起作用,说下vs2008解决办法:

把C:\Program Files\Common Files\Microsoft Shared\OFFICE12\Office Setup Controller\setup.exe删除或改名

 

重启vs,问题解决

 

不知道为什么vs切换到设计视图的时候就运行到这个setup.exe,很诡异,看来是跟office 2007 有冲突 本来电脑上没有安装office 

 

2007,一次需要打开.docx,安装了一个相关插件,结果引来这个麻烦事,写下来希望对遇到同样问题的人有点帮助

=========

 

====2====

注册表导致VS2008切换设计视图假死

VS2008刚刚出来的时候,安装过一次,一段时间没用,后来打开WebApplication的时候,一点设计,VS2008IDE就死掉。后来就删除

 

了。最近打算用VS2008,就又开始安装了。

第一次安装:用的是电脑公司克隆版9,克隆好系统就安装VS2008,启动空WebApplication点设计就死。

到网上查找,有不少提出这个问题的,但是没有解决方案。

又下载了一个YLMF克隆版,克隆好就安装VS2008,测试没有问题。可把需要的软件安装好之后,点设计又死。

下面是痛苦的历程,多次的克隆,安装,不过功夫不负有心人,确定了问题的原因,安装了RTX2006(腾讯通)之后,导致了VS2008 

 

WEB设计假死。

 

罪魁祸首确定之后,就是查找RTX2006安装程序做了什么。又经过了几个小时的折腾,最后确定原因出在注册表中的一个键值上面。

 

原键值:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{F5078F18-C551-11D3-89B9-0000F81FE221}\5.0\0\win32]

@="C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll"

 

安装RTX2006后:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{F5078F18-C551-11D3-89B9-0000F81FE221}\5.0\0\win32]

@="C:\\Program Files\\Common Files\\Tencent\\MSXML5.dll"

 

如果这个键值不为C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE11\\msxml5.dll,启动VS2008 的WEB设计界面就

 

假死。

不知道没有安装OFFICE2003的机器上安装VS2008这个键值是什么?

 

========

 

VS2008在ASPX的源代码视图下,出现元素的错误提示。

“无法加载"*.site"”等,或者:

在加载母版时,出现ASP.NET运行时错误,无法处理母版文件(*.master),原因是代码目录尚未生成。

 

问题出在编译目录中有的代码存在错误造成的。只需要将相关代码的错误去掉(如果你在用源码管理系统的话,请获取到最新)

答案来自: http://social.microsoft.com/Forums/zh-CN/vstszhchs/thread/3878e61d-b1ab-46c6-8763-02871be4ca54

http://four-corner.appspot.com/

转载于:https://www.cnblogs.com/yinyao/archive/2010/01/26/1656598.html

<think>我们正在处理一个关于PyTorch中类继承和属性查找的问题。用户描述的场景是: 父类和子类都有一个名为`mode`的属性。父类的`mode`默认是&#39;multi&#39;,子类在`__init__`方法中将`mode`设置为&#39;single&#39;,然后调用`forward()`方法。注意,`forward()`方法在子类中没有实现,但是父类中有实现。用户想知道在父类的`forward`方法中打印`self.mode`会输出什么。 根据面向对象编程的原则,属性查找遵循方法解析顺序(MRO)。当在父类的`forward`方法中访问`self.mode`时,实际上会查找当前实例(即子类实例)的属性。因为子类在`__init__`中设置了`mode`为&#39;single&#39;,所以父类的`forward`方法中访问的`self.mode`应该是子类设置的值,即&#39;single&#39;。 但是,我们需要注意在子类中是否调用了父类的`__init__`方法。如果子类没有调用父类的`__init__`,那么父类的初始化可能没有执行,这可能会影响属性的设置。然而,在PyTorch中,我们通常会在子类的`__init__`中调用父类的`__init__`(使用`super().__init__()`)以确保正确的初始化。 用户的问题中没有明确说明子类是否调用了父类的`__init__`,但根据常规实践,我们假设子类调用了父类的`__init__`。因此,在父类的`__init__`中可能会设置`mode`为&#39;multi&#39;,但随后子类在`__init__`中又将其改为&#39;single&#39;。这样,在调用父类的`forward`方法时,`self.mode`就是子类最后设置的值。 下面我们用一个简单的代码示例来说明: 假设父类为`Parent`,子类为`Child`。 ```python import torch.nn as nn class Parent(nn.Module): def __init__(self): super().__init__() self.mode = &#39;multi&#39; # 父类初始化时设置mode为&#39;multi&#39; def forward(self, x): # 在父类的forward方法中访问self.mode print("In Parent&#39;s forward, mode is:", self.mode) return x class Child(Parent): def __init__(self): super().__init__() # 调用父类的__init__,此时self.mode被设置为&#39;multi&#39; self.mode = &#39;single&#39; # 然后子类将其改为&#39;single&#39; # 创建子类实例 child = Child() # 调用forward方法(子类没有实现,所以调用父类的forward) output = child(torch.tensor(1.0)) ``` 在这个例子中,当我们调用`child(torch.tensor(1.0))`时,由于`Child`类没有覆盖`forward`方法,所以会调用`Parent`类的`forward`方法。在`Parent.forward`中,打印`self.mode`,此时`self`是`Child`的实例,它的`mode`属性在`Child.__init__`中被设置为&#39;single&#39;(因为子类的赋值覆盖了父类初始化时的赋值)。因此,打印的结果将是: In Parent&#39;s forward, mode is: single 所以,答案是:会打印出&#39;single&#39;。 但是,如果子类没有调用父类的`__init__`,那么父类的`__init__`就不会执行,父类中设置的`mode`就不会存在。此时,子类设置`mode`为&#39;single&#39;,那么父类的`forward`方法中访问的`self.mode`就还是&#39;single&#39;。因此,无论是否调用父类的`__init__`,只要子类设置了`mode`,那么父类方法中访问的就是子类设置的值。 结论:在父类的`forward`方法中,`self.mode`的值是子类中设置的值,即&#39;single&#39;。 现在,根据用户的要求,我们需要生成相关问题。考虑到用户的问题是关于PyTorch中类继承和属性查找的,我们可以提出以下相关问题: 1. 在PyTorch中,如果子类覆盖了父类的属性,那么在调用继承自父类的方法时,该方法使用的是子类的属性还是父类的属性? 2. 在PyTorch中构建神经网络模块时,为什么通常需要在子类的`__init__`方法中调用`super().__init__()`? 3. 在PyTorch中,如何正确地在子类中扩展父类的方法(例如,在保留父类`forward`方法功能的同时添加新功能)? 注意:引用部分只是作为参考,我们这里没有直接使用,但可以根据需要引用。由于用户的问题中没有涉及具体的引用内容,我们主要依据面向对象编程和PyTorch的常规实践来回答。 因此,最终回答如下:</think>在PyTorch中,当子类继承父类时,属性查找遵循Python的继承规则。具体到您的场景: 1. **子类初始化流程**: - 子类在`__init__`中显式设置`self.mode = &#39;single&#39;` - 若子类调用了`super().__init__()`,父类初始化会将`self.mode`设为`&#39;multi&#39;`,但**子类的赋值会覆盖父类的值**(因为子类`__init__`最后执行) - 若子类未调用`super().__init__()`,则父类初始化不会执行,`self.mode`直接为`&#39;single&#39;` 2. **方法调用时的属性查找**: - 当调用`forward()`(未在子类实现)时,实际执行父类的`forward`方法 - 在父类`forward`中访问`self.mode`时,Python会在**当前实例**(子类实例)的属性字典中查找 - 由于子类已设置`self.mode = &#39;single&#39;`,最终输出为`&#39;single&#39;` **关键验证代码**: ```python import torch.nn as nn class Parent(nn.Module): def __init__(self): super().__init__() self.mode = &#39;multi&#39; # 父类默认值 def forward(self, x): print(f"Parent&#39;s forward: mode={self.mode}") # 实际访问子类属性 return x class Child(Parent): def __init__(self): super().__init__() # 调用父类初始化(设置self.mode=&#39;multi&#39;) self.mode = &#39;single&#39; # 子类覆盖属性 # 测试 child = Child() child(torch.randn(1)) # 输出: Parent&#39;s forward: mode=single ``` **输出结果**: ``` Parent&#39;s forward: mode=single ``` **根本原理**: - Python属性查找遵循**实例→类→父类**的顺序(MRO) - PyTorch模块的`forward`调用基于动态绑定,`self`始终指向实际实例(子类对象) - 父类方法访问的属性是**实例的当前状态**,而非父类初始值[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值