Domanda

Ho un problema con il "Copia in uscita" funzionalità in Visual Studio 2008. Forse sto fraintendendo come la sua dovrebbe funzionare.

Ho una soluzione con quattro progetti:

  • TestApp1 (applicazione Windows)
  • TestAppA (applicazione Windows)
  • TestProj1 (libreria di classi)
  • TestProjA (libreria di classi)

Le dipendenze sono i seguenti (dipendenza come riferimento di progetto).

  • TestProj1 dipende da nulla.
  • TestApp1 dipende TestProj1
  • TestProjA dipende TestProj1
  • TestAppA dipende TestProjA (e quindi indirettamente sulla TestProj1)

In altre parole, l'albero delle dipendenze assomiglia a questo.

TestApp1
    TestProj1
TestProjA
    TestProj1
TestAppA
    TestProjA
        TestProj1

(ogni progetto ha un riferimento ai gruppi standard (sistema, System.Core, ecc) così)

In TestProj1, ho aggiunto un file di testo, Test.txt. Nelle proprietà di questo file, ho specificato "Costruire Azione: Content" e "Copia di directory di output: Copia sempre".

Quando costruisco la soluzione, Test.txt viene copiato

  • TestApp1 \ bin \ debug
  • TestProj1 \ bin \ debug
  • TestProjA \ bin \ debug

Il file è non copiato TestAppA \ bin \ debug e questo è quello che trovo strano. Dal momento che si basa su TestProj1 Test.txt al lavoro, e si basa su TestAppA TestProj1, via TestProjA, TestApp1 non funzionerà.

Se posso aggiungere un riferimento al progetto da TestAppA direttamente al TestProj1 (quindi devo un riferimento a TestProj1 e un altro per TestProjA), il file verrà copiato nella cartella TestAppA \ bin \ debug.

Naturalmente, ho potuto impostare un evento di generazione personalizzata per copiare il file Test.txt per TestAppA \ bin \ debug, ma ho brutte esperienze con generazione personalizzata di eventi e preferiscono fare affidamento sui meccanismi di copia incorporati.

Quindi la mia domanda è: perché non è TEST.TXT copiato TestAppA \ Bin \ debug

È stato utile?

Soluzione

Todd ha risposto bene già, ma due soluzioni più comuni a questo sono:

  • inserisce una fase di post-generazione per i vostri progetti dipendenti che XCOPY il Test.txt nella loro cartella di output
  • aggiungere il file di testo come una risorsa incorporata nel montaggio del progetto TestProj1 e di sbarazzarsi della necessità di un file di dati esterni del tutto

Vorrei anche suggerire che tutte le dipendenze potrebbero semplicemente chiamare un'API in TestProj1 per recuperare le informazioni di cui hanno bisogno, permettendo che il montaggio per incapsulare i dati e memorizzare ovunque, tuttavia, e in qualsiasi formato che vuole.

Altri suggerimenti

Visual Studio guarda solo riferimenti diretti per i file di contenuto, quindi TestAppA non sa che esiste Test.txt dal momento che non lo vede nel file di progetto TestProjA.

Questa è una limitazione di Visual Studio, ed è il motivo per cui molte persone finiscono per indicare l'uscita di tutti i loro progetti nella stessa cartella.

L'altra opzione che avete, è quello di creare una cartella "SharedContent". È quindi possibile inserire il file di testo in quella cartella, e aggiungerlo ad ogni progetto che dipende da esso selezionando "Aggiungi> elemento esistente ..." su ciascun progetto. Nella finestra di dialogo Aggiungi elemento, selezionare il file di testo dalla cartella condivisa e fare clic sulla piccola freccia verso il basso sul pulsante "Aggiungi". Se si seleziona "Aggiungi come Link", è possibile aggiungere il file al progetto senza creare una copia.

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