Domanda

È possibile dividere le informazioni in un .csproj su più di un file? Un po 'come una versione del progetto della funzione classe parziale .

È stato utile?

Soluzione

Non puoi avere più di un master csproj. Ma poiché il cablaggio sottostante di csproj è fatto usando msbuild, puoi semplicemente avere più csproj parziali che si importano a vicenda. Il file della soluzione visualizzerebbe il più derivato csproj.

Project1.csproj

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    ....
</Project>

project2.csproj

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="project1.csproj" />
    ...
</Project>

project.csproj : questo è il progetto principale a cui fa riferimento il file della soluzione.

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Import Project="project2.csproj" />
    ...
</Project>

In conclusione, usando la funzione msbuild Importa puoi avere file csproj parziali in cui ognuno conterrebbe le definizioni che il progetto principale (project.csproj nel mio esempio) userebbe.


Visual Studio mostrerà un Avviso di sicurezza per progetto quando si apre la soluzione modificata o il file di progetto. Scegli l'opzione Carica progetto normalmente e premi OK . Quando si riapre la soluzione in un secondo momento, l'avviso non verrà visualizzato perché la configurazione per Carica progetto normalmente è memorizzata nel file suo .

Altri suggerimenti

Sì, puoi dividere le informazioni su più file. Puoi utilizzare Import Element (MSBuild) .

Nota che Visual Studio ti darà fastidiosi avvisi di sicurezza se proverai ad aprire il file di progetto che include altri file di progetto.

Link utili da MSDN:

Procedura: utilizzare lo stesso target in più file di progetto

Nota che i file esterni hanno l'estensione .targets per convenzione.

Beh, puoi avere più progetti combinati in un'unica soluzione di grandi dimensioni, ma non penso che sia proprio quello che avevi in ??mente poiché ogni progetto deve essere un progetto completo in quel caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top