2016-03-24 56 views
0

當升級dotnet時網站基於asp.net WebForms到Web應用程序我遇到了母版頁的問題。當引用自己的屬性和成員時,母版頁將不會編譯

我的母版頁包含在他們的.aspx文件的標記,引用如下:

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

GetUserName()是我的母版頁的代碼隱藏文件中定義的保護方法,並AccountId是在同一個地方一個受保護的領域。

做Web應用程序升級(其中包括自動生成Site.Master.designer.cs代碼隱藏文件來陪伴我自己Site.Master.cs代碼隱藏文件)的母版頁(而不是代碼隱藏)的編譯後開始出現故障,拒絕在<% =GetUserName() %>結構的保護成員引用。 VS 2015 Intellisense說GetUserName not defined in this context.

但是轉到定義...項目VS2015的上下文菜單仍然適用於違規的受保護的成員引用。奇怪的。

當我從頭開始創建新的Web App項目時,它沒有這個問題。我怎樣才能解決這個問題?還是有什麼特別的升級網站項目,防止這些受保護的成員引用?

回答

2

我想通了。

項目的順序在project.csproj中很重要,並且從Web站點到Web應用程序的轉換並不總是正確。

要修復,請關閉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中清理並重新構建項目。

相關問題