繁体   English   中英

母版页引用其自身的属性和成员时将无法编译

[英]Master page won't compile when referencing its own properties and members

将基于asp.net WebForms的dotnet 网站升级到Web应用程序时,我在使用母版页时遇到了麻烦。

我的母版页的.aspx文件标记中包含如下引用:

<div>
   Name: <% =GetUserName() %>  Account: <% =AccountId %>
</div>

GetUserName()是在我的母版页代码隐藏文件中定义的受保护方法,而AccountId是同一位置的受保护字段。

完成Web App升级(涉及自动生成Site.Master.designer.cs隐藏文件以伴随我自己的Site.Master.cs隐藏文件)之后,母版页(而非代码隐藏)的编译开始失败,从而拒绝受保护的对象。 <% =GetUserName() %>构造中的成员引用。 VS 2015 Intellisense表示GetUserName not defined in this context.

但是,VS2015上下文菜单中的“ 转到定义...”项仍可用于有问题的受保护成员引用。 奇怪的。

当我从头开始创建新的Web App项目时,它没有这个问题。 我怎样才能解决这个问题? 还是关于阻止这些受保护成员引用的升级网站项目有什么特别之处?

我想通了。

项目的顺序在project.csproj ,从Web站点到Web App的转换并不总是正确的。

要修复此问题,请关闭VS2015,然后使用文本编辑器打开project.csproj文件。 (它将为您的项目命名。)为您的母版页代码隐藏文件寻找<Compile...>标记。

然后确保用于编译自己的代码隐藏文件的标记位于.designer.cs代码的标记之前 ,如下所示:

<Compile Include="Site.Master.cs">
  <DependentUpon>Site.Master</DependentUpon>
  <SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="Site.Master.designer.cs">
  <DependentUpon>Site.Master</DependentUpon>
</Compile>

以我的经验,这些标记在自动生成的.csproj文件中被广泛分离。

无论如何,移动其中一个使其井然有序可以解决我的问题。

如果在IDE外部更改.csproj文件,请不要忘记在VS2015中清理和重建项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM