对于这个故事,我在VS2012上建立了一个旧的3.5 ASP.NET / VB.NET网站项目(ASPX),我已经升级到4.5以便在VS2015上运行良好。 我也试图删除它得到的所有编译错误,即使网站在它们下工作(VB.NET很奇怪......)
在这个操作过程中,我有一些不变的代码,之前运行良好,但它们不再让我跑了。
所以,这是构建问题:
我有一个UserControl(private/UserControls/FicheCRF/OngletAccueil.ascx
),在页面(private/ficheCRF.aspx
)中使用,需要MasterPage(private/MasterPage.master
)中的一些值。
它们都使用相同的命名空间Vita
,以下是一些要理解的摘录:
MasterPage:
Namespace Vita
Partial Public Class private_MasterPage
Inherits System.Web.UI.MasterPage
Public _debug As Integer = HttpContext.Current.Request.Params("debug")
Public ReadOnly Property ModeDebug As Integer
Get
Return _debug
End Get
End Property
...
UserControl:
Namespace Vita
Public Class private_UserControls_FicheCRF_OngletAccueil
Inherits System.Web.UI.UserControl
Public ReadOnly Property modeDebug As Integer
Get
Return DirectCast(Me.Page.Master, private_MasterPage).ModeDebug
End Get
End Property
...
ASPX页面:
<%@ Page Async="true" Title="" Language="VB" MasterPageFile="~/private/MasterPage.master" AutoEventWireup="false" CodeFile="ficheCRF.aspx.vb" Inherits="Vita.public_ficheCRF" %>
<%@ Register TagPrefix="VitaTools" TagName="OngletAccueil" Src="UserControls/FicheCRF/OngletAccueil.ascx" %>
...
有了这个,我在UserControl中得到了关于MasterPage类类型的编译错误:
Type 'private_MasterPage' is not defined.
上的\private\UserControls\FicheCRF\OngletAccueil.ascx.vb
我甚至不明白为什么它在以前的框架上运行时没有运行IISexpress ...
我向您展示了一些代码,让您了解代码并不是真正的问题:似乎问题来自于intelliSense或编译临时文件,例如,如果无法看到MasterPage类(范围访问)由UserControl,因为它们不在同一个临时程序集中。
之前,我遇到了同样的问题,用户控件用于另一个userControl(这些文件保存在完全相同的文件夹中......),但我能够用web.config
设置欺骗编译器,它似乎工作:
<pages>
<controls>
<add tagPrefix="VitaTools" src="~/private/UserControls/FicheCRF/PosteUser.ascx" tagName="PosteUser" />
<add tagPrefix="VitaTools" src="~/private/UserControls/FicheCRF/NotesDeFrais.ascx" tagName="NotesDeFrais" />
<add tagPrefix="VitaTools" src="~/private/UserControls/FicheCRF/CrfEvals_CollaborateursInternes.ascx" tagName="EvalsCollaborateursInternes" />
</controls>
</pages>
但是在这里,MasterPage不是一个控件,它是一个页面,我不能使用相同的技巧......
对于帮助人员来说,我已经花了很多时间在上面,我确实分析了一堆Q&amp; A&amp; MSDN文档在发布之前,就此而言,这是我最后的希望:'(
这里有一些最后的&amp; web.config
上的有用信息:
<supportedRuntime version="v4.0"/>
...
<compilation debug="true" batch="false" strict="false" explicit="true" targetFramework="4.5">
...
<pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
...
答案 0 :(得分:0)
好的,我知道了,通过改变PC ......
我认为问题来自于在不同版本的VS上编译项目。
我在2012年只对我的项目进行了一次汇编,然后2015年的汇编成了这个牢不可破的错误......
因此,即使您清除某些临时文件夹,例如AppData\Local\Temp\Temporary ASP.NET Files
,AppData\Local\Temp\VWDWebCache
或.vs\project\v14\.suo
,也是不够的。
在对其他出现的事情进行更多调试之后,我现在可以编译0错误并在更多调试之后发布。现在我在运行时遇到了一些其他问题,它仍然没有像以前那样完全正常工作但它越来越近了;)
<强>更新强>
在为编译工作之前我做了什么,但它没有解决运行时(错误在运行时作为InvalidCastException返回)。
为了解决运行时,我刚刚检查了Build / Publish选项“使用固定命名和单页程序集”,它解决了我的问题:)
Unckeck还有构建(和发布)选项“允许此预编译站点可更新”
这里有一些有用的链接:https://msdn.microsoft.com/en-us/library/hh475319(v=vs.110).aspx