5

ho personalizzato il mio progetto con una soluzione che ho trovato in questa domanda:Click-once pubblicare file addtional fermato con VS 2012

Why doesn't ClickOnce in Visual Studio deploy content files from dependent assemblies?

<ItemGroup> 
<AdditionalPublishFile Include="$(OutputPath)\**\*.rpt"> 
    <Visible>False</Visible> 
</AdditionalPublishFile> 
</ItemGroup> 
<Target Name="BeforePublish"> 
    <Touch Files="@(IntermediateAssembly)" /> 
    <CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false"> 
    <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" /> 
    </CreateItem> 
</Target> 

stava funzionando benissimo con VS 2010, fino a quando ho aggiornato a VS 2012, i file aggiuntivi non sono stati inclusi nel manifest dell'applicazione !! così quando l'utente installa l'applicazione, i file menzionati mancavano dalla cartella principale dell'applicazione.

Cosa è cambiato in VS 2012? o forse i cambiamenti sono in MSBuild?

EDIT:

ho menzionato la domanda iniziale da dove ho avuto l'idea, in fondo sto usando Dependency Injection per caricare alcune assemblee, il che significa che non v'è alcun riferimento concreto tra il mio progetto e le assemblee, in modo che il la distribuzione click-once non prenderà in considerazione quegli assembly, che mi costringono ad aggiungerli al progetto, o ad usare la soluzione menzionata, ho scelto la soluzione menzionata in quanto è invisibile e facile.

ma è stato rotto dopo la migrazione a VS 2012.

+0

Perché tutte le domande relative MSBuild non ci vuole molta attenzione ?? –

+0

Contento di aver trovato questo post - stavo per implementare questo metodo - http://blogs.msdn.com/b/mwade/archive/2008/06/29/how-to-publish-files-which-are-not -in-the-project.aspx – tofutim

+0

@tofutim Come hai fatto a far funzionare tutto questo, questa soluzione non funzionava con me con MsBuild. –

risposta

1

Ho trovato la tua domanda sconcertante perché non ho mai visto nessuno farlo con ClickOnce prima, così ho parlato con il ragazzo ClickOnce di Microsoft su di esso. Ha detto che ciò che stai facendo non è supportato, quindi non è qualcosa per cui avrebbero dovuto essere testati. Ci sono più modifiche a msbuild che potrebbero aver infranto quello che stai facendo.

è quello che si sta cercando di fare è ottenere i file associati a un riferimento secondario incluso nella distribuzione? In altre parole, si dispone di un progetto principale che fa riferimento a un altro assieme creato creando un secondo progetto e il secondo gruppo contiene file di contenuti e si desidera che siano inclusi nel progetto?

Se questo è ciò che si sta cercando di fare, si dovrebbe considerare il collegamento di tali file al progetto principale invece. Per fare ciò, è possibile aggiungere un elemento esistente come collegamento e puntarlo sul contenuto del secondo progetto. Quindi il contenuto sarà incluso quando costruirai il primo progetto.

+0

Grazie Robin, pensavo che nessuno avrebbe notato questa domanda :), ho modificato la mia domanda per aggiungere ulteriori dettagli, tuttavia, non ho provato a collegare gli assembly come suggerito, ma mi sembra che sia simile all'aggiunta del assemblee direttamente al progetto (non riferendole). –

+0

Non è lo stesso, perché quando si collega agli assiemi, raccoglierà la nuova versione quando li costruisci. Se li copi nel progetto e li aggiungi qui, non vengono aggiornati a meno che non li aggiorni. – RobinDotNet

+2

Sembra che ClickOnce e VS debbano essere simmetrici nel riconoscere i file di contenuto dal secondo assembly. – tofutim

1

spostare l'attività CreateItem al passo BeforeBuild e rimuovere il compito di tocco:

<ItemGroup> 
    <AdditionalPublishFile Include="$(OutputPath)\**\*.rpt"> 
    <Visible>False</Visible> 
    </AdditionalPublishFile> 
</ItemGroup> 
<Target Name="BeforeBuild"> 
    <CreateItem Include="@(AdditionalPublishFile)" AdditionalMetadata="TargetPath=%(RecursiveDir)%(Filename)%(extension);IsDataFile=false"> 
    <Output TaskParameter="Include" ItemName="_DeploymentManifestFiles" /> 
    </CreateItem> 
</Target>