[英]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.