VS2015 - VB / ASP.NET构建假错误:“在UserControl代码隐藏

时间:2016-02-10 13:32:45

标签: asp.net vb.net .net-4.5 intellisense visual-studio-2015

好的,伙计,这个并不容易......

对于这个故事,我在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">
...

1 个答案:

答案 0 :(得分:0)

好的,我知道了,通过改变PC ......

我认为问题来自于在不同版本的VS上编译项目。

我在2012年只对我的项目进行了一次汇编,然后2015年的汇编成了这个牢不可破的错误......

因此,即使您清除某些临时文件夹,例如AppData\Local\Temp\Temporary ASP.NET FilesAppData\Local\Temp\VWDWebCache.vs\project\v14\.suo,也是不够的。

在对其他出现的事情进行更多调试之后,我现在可以编译0错误并在更多调试之后发布。现在我在运行时遇到了一些其他问题,它仍然没有像以前那样完全正常工作但它越来越近了;)

<强>更新

在为编译工作之前我做了什么,但它没有解决运行时(错误在运行时作为InvalidCastException返回)。

为了解决运行时,我刚刚检查了Build / Publish选项“使用固定命名和单页程序集”,它解决了我的问题:)

Unckeck还有构建(和发布)选项“允许此预编译站点可更新”

这里有一些有用的链接:https://msdn.microsoft.com/en-us/library/hh475319(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/aa479044.aspx

http://forums.asp.net/t/960707.aspx