2016-03-24 3 views
0

Referenzierung Wenn eine dotnet Web Site Upgrade basierend auf asp.net WebForms zu einem Web App Ich habe Probleme mit Masterseite.Master-Seite wird nicht kompiliert, wenn seine eigenen Eigenschaften und Mitglieder

Meine Masterseiten enthalten, in ihrer ASPX-Datei Markup, Referenzen wie folgt aus:

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

GetUserName() eine geschützte Methode in meinem Masterseite der Code-Behind-Datei definiert ist, und AccountId ist ein geschütztes Gebiet an der gleichen Stelle .

Nach dem Web App-Upgrade zu tun (die automatisch eine Site.Master.designer.cs Code-Behind-Datei beinhaltet das Erzeugen von meiner eigenen Site.Master.cs Code-Behind-Datei zu begleiten) Erstellung der Master-Seite (nicht die Code-Behind) beginnt zu versagen, die geschützte Mitglied Referenzen in den <% =GetUserName() %> Konstrukten Ablehnung . VS 2015 Intellisense sagt GetUserName not defined in this context.

Aber die Go To Definition ... Element auf VS2015-Kontextmenü funktioniert immer noch für die beanstandeten geschützten Mitglieder Referenzen. Seltsam.

Wenn ich ein neues Web-App-Projekt von Grund auf neu, hat es dieses Problem nicht. Wie kann ich das beheben? Oder gibt es etwas Besonderes an aktualisierten Website-Projekten, die diese geschützten Mitgliedsreferenzen verhindern?

Antwort

2

Ich habe das herausgefunden.

Die Reihenfolge der Elemente zählt in der project.csproj, und die Konvertierung von Web Site zu Web App bringt es nicht immer richtig.

Um zu beheben, schließen Sie VS2015, dann verwenden Sie einen Texteditor, um Ihre project.csproj Datei zu öffnen. (Es wird nach Ihrem Projekt benannt.) Suchen Sie nach den Tags <Compile...> für die Codebehind-Dateien Ihrer Masterseite.

Dann stellen Sie sicher, das Tag Ihre eigene Code-Behind-Datei vor die einen für den .designer.cs Code kommt zu kompilieren, wie folgt aus:

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

Meiner Erfahrung nach wurden diese Tags sind weit verbreitet in den automatisch generierten getrennt .csproj Datei.

In jedem Fall, eine von ihnen zu verschieben, so dass sie in Ordnung waren, löste mein Problem.

Vergessen Sie nicht, Ihr Projekt in VS2015 zu reinigen und neu zu erstellen, wenn Sie Ihre .csproj Dateien außerhalb der IDE ändern.

Verwandte Themen