Sostituire la classe Program.cs con App.xaml

by Administrator 28. settembre 2016 18:13

Giorni fa, con Visual Studio 2015 Pro, ho aperto un sorgente C#/WPF fatto con Visual Studio 2010.
Tutto ok. Fatta la conversione ho lavorato sul sorgente senza problemi.

Oggi ho voluto eliminare la vecchia classe Program.cs che faceva da Startup all’applicazione ed usare la classe App.xaml con App.xaml.cs.

Purtroppo il progetto, ex 2010, non riconosce la classe “App” come possibile startUp dell’applicazione e mi chiede il medoto Main quando tento di avviarlo (F5).


Siccome non volevo rifare tutto il progetto e copiare tutte le classi, windows, usercontrols, ecc.. oppure rimettere la classe Program.cs ho trovato la soluzione comparando i progetti VS2010 e VS2015.

Dopo un'attenta valutazione ho trovato la soluzione.

Ecco cosa fare per sostituire il classico Program.cs col App.xaml:

 

  • Prima di tutto cancellare il file program.cs
  • Creare un progetto WPF con VS 2015 temporaneo.
  • Individuare la classe App.xaml con rispettivo file .cs e importarlo nel progetto ex 2010. Basta importare il file xaml e si porterà dietro il file .cs.
  • Sistemate il namespace del file App.xaml e App.xaml.cs


Fatto questo bisogna modificare manualmente il progetto per usare il nuovo StartUp:

 

  • Fate click col tasto dx sul progetto da Solution Explorer e selezionare “Unload Project”.
  • Nuovamente click dx sul progetto e selezionare “Edit Nomeprogetto”. A questo punto avete il file del progetto aperto nella visualizzazione del codice.
  • individuate ed eliminate questa parte di codice:
<Page Include="App.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
  • Individuate questa parte:
<Compile Include="App.xaml.cs">
      <DependentUpon>App.xaml</DependentUpon>
      <SubType>Code</SubType>
    </Compile>

E aggiungete questa parte (in alto subito dopo <ItemGroup> ):

<ApplicationDefinition Include="App.xaml">
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </ApplicationDefinition>

  • Infine individuate questa parte:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" 

/>

e aggiungete questa:

<Import Project="$(MSBuildBinPath)\Microsoft.WinFX.targets" />

  • Salvate, e nuovamente col tasto dx del mouse sul progetto in Solution Explorer selezionate “Reload Project”.
    Se andate nelle Property del progetto vedete la vostra classe App nel combobox “Startup object”.
    Provate ad avviare e vedrete che funziona il tutto.

Spero possa essere utile a chi si trovasse nella stessa situazione.

Tags: , , ,

.Net | Visual Studio | WPF

Aggiungi Commento

  Country flag

biuquote
  • Commento
  • Anteprima
Loading

Info sull'Autore

Pranzo Stefano

.Net Developer

Month List

Page List