In Visual Studio, è possibile eseguire Add
->Existing Item
e quindi Add as Link
dal pulsante a discesa Add
.I file collegati a Visual Studio non esistono
Questo è fantastico. Questo ti permette di aggiungere un file da un altro progetto, e modificarlo lo modifica anche nel progetto originale.
Vorrei utilizzare questa funzione per avere un file di configurazione (denominato Shared.config) presente in tutti i progetti all'interno di una soluzione. E avere quel file sempre uguale.
soluzione
|
| - project 1
|
- Shared.config [physical]
| - project 2
|
- Shared.config [linked]
Dopo la pubblicazione, il file finisce in tutti i progetti pubblicati, quindi non ci sono problemi.
MA PRIMA di pubblicare (durante lo sviluppo su build) il file collegato non esiste realmente. Cercando di vedere il file in Esplora risorse si dimostra che il file non si trova nella directory del progetto. Visual Studio fa apparire come se esistesse lì in Solution Explorer. (anche se in costruzione, elementi collegati sono probabilmente copiato nella directory bin
, ma io non voglio utilizzare i file/accesso dalla directory bin
.)
Ora, questo dà problemi fuori rotta. Provare a stampare System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("Shared.config"))
avrà esito negativo prima che il progetto sia stato pubblicato, a causa del fatto che Shared.config non esiste ancora nella directory principale del progetto.
Quello che mi piacerebbe fare, e dove ho bisogno del vostro aiuto è:
- Vorrei ON copia costruire tutti i file collegati a loro posizione originale per la loro posizione di destinazione.
Ciò farà sì che Visual Studio abbia il file collegato e una copia dell'originale, che esista entrambi nella stessa directory con lo stesso nome.
Normalmente, VS non consente di creare un elemento collegato in una directory se tale directory contiene già un file con lo stesso nome.
Ma, ho provato creando prima un oggetto collegato; quindi utilizzando Windows Explorer per copiare il file originale nella directory di destinazione e vedere Visual Studio agire ok. L'explorer della soluzione nasconde semplicemente il file fisico e mostra l'oggetto collegato. (Anche se si fa clic Show all files
nella soluzione Explorer.)
soluzione
|
| - project 1
|
- Shared.config [physical]
| - project 2
|
- Condiviso.config [linked]
|
- Shared.config [fisico, copiato qui durante la compilazione, invisibile a Solution explorer]
Questo è esattamente ciò che voglio! Quando provi a modificare il file, Visual Studio aprirà l '"oggetto collegato". E su build, un file fisico verrà copiato nella directory di destinazione in modo che esista per il codice che tenta di accedervi.
Ora come si fa? Questo dovrebbe essere fatto con gli eventi Build? In tal caso, come si dice 'copia gli originali di tutti i file collegati nella loro directory di destinazione?
La tua "soluzione" sembra incredibilmente confusa e un incubo per il controllo del codice sorgente. –
@ 280Z28 In che modo i file condivisi sono un incubo per un controllo del codice sorgente? Vengono copiati sulla build nella directory di output che non è archiviata nel controllo del codice sorgente. –
"Confusione" è soggettiva. Tuttavia, ciò non ha alcun impatto sul controllo del codice sorgente poiché l'OP non sta cercando di verificare le copie del file fisico. Sono un artefatto della build che risiede semplicemente nella directory del progetto. – dss539