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