2014-10-13 16 views
5

Sto sviluppando un'applicazione mobile basata su Cordova tramite il modello Cordova di Visual Studio e un'applicazione Web ASP.NET MVC nella stessa soluzione di Visual Studio. Mi piacerebbe essere in grado di condividere il maggior numero possibile di HTML tra entrambi i progetti. Un problema che sto incontrando è il raggruppamento e la minimizzazione che ha luogo in ASP.NET che non è disponibile nel progetto Cordova. Qualche idea su come potrei supportare la minificazione in Visual Studio su entrambi i progetti che mi permetterebbe di condividere più codice possibile?Condivisione del codice tra il progetto ASP.NET MVC e il progetto Cordova

risposta

0

Il file di progetto di Cordova .jsproj è un file di build ordinario gestito da MSBuild, quindi è possibile applicare qualsiasi logica di elaborazione necessaria aggiungendo destinazioni personalizzate. Puoi persino eseguire strumenti dal mondo Node.js come Grunt o Gulp installando rispettive estensioni VS.

Quanto alla condivisione di codice tra progetti ASP.NET e Cordova, mi consiglia di aggiungere link nella tua .jsproj, come segue:

<PropertyGroup> 
    <AspNetProject>C:\YourAspNetProject</AspNetProject> 
</PropertyGroup> 
<ItemGroup> 
    <Content Include="$(AspNetProject)\Views\**\*.cshtml"> 
    <Link>views\%(RecursiveDir)%(FileName).html</Link> 
    </Content> 
    <!-- add other links here --> 
</ItemGroup> 

In questo modo VS visualizza i file collegati in Solution Explorer e consente di modificare loro come se fossero locali.

Purtroppo, la versione corrente di VS Tools per Apache Cordova, CTP3, non supporta elementi collegati, quindi un altro cambiamento deve essere fatto nella vostra .jsproj:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\CordovaTools\vs-mda-targets\Microsoft.MDA.targets" /> 
<PropertyGroup> 
    <BuildDependsOn>PreBuild;$(BuildDependsOn)</BuildDependsOn> 
</PropertyGroup> 
<Target Name="PreBuild"> 
    <ItemGroup> 
    <LinkedFiles Include="@(Content)" Condition="'%(Content.Link)' != ''" /> 
    <!-- add other links here --> 
    </ItemGroup> 
    <Copy SourceFiles="%(LinkedFiles.Identity)" DestinationFiles="%(LinkedFiles.Link)" /> 
</Target> 

Il compito PreBuild si chiama prima di ogni Build sottotask e copia i file collegati sul progetto Cordova. Il resto del processo di compilazione viene eseguito come al solito.

+0

Ho provato ad aggiungere il file PropertyGroup e ItemGroup al mio '.jsproj' per un singolo file JS che voglio condividere. Quando il progetto viene ricaricato, il collegamento appare brevemente prima di scomparire. Utilizzo di VS 2015 Update 2. Qualche idea su cosa sta succedendo? – phuzi

+0

@phuzi mi dispiace, non mi sono mai occupato di VS 2015 Update 2. –

Problemi correlati