Aggiungi file come collegamento su Visual Studio – Debug vs Pubblica

Ogni volta che devo colbind un file in un progetto ASP.NET come collegamento, c’è sempre qualcosa che dimentico di fare, perché Visual Studio è troppo buggato e fastidioso con questi. C’è un bug / limitazione con esso in modo che non copi il file nella cartella di output di Debug, e dobbiamo cambiare le proprietà del file in modo che venga copiato anche nella cartella di output Pubblica.

Ho imparato questo nel modo più duro, dopo molte ricerche, e ho creato un objective AfterBuild per aiutare a rendere questo processo più facile. Tuttavia, c’è ancora del lavoro manuale da fare quando si aggiunge il file.

Ecco un esempio per un progetto che mantengo. Supponiamo di voler aggiungere il file YIUCARD nella cartella “utilità” del progetto ASP.NET.

1) Fare clic con il tasto destro sulla cartella “utilità” su Visual Studio e selezionare “Aggiungi -> elemento esistente”.

Passo 1

2) Selezionare il file da aggiungere, facendo clic su ONCE (non fare doppio clic).

Passo 2

3) Fare clic sulla freccia accanto al pulsante “Aggiungi” e selezionare “Aggiungi come collegamento”.

Passaggio 3

Al momento, questo non farà nulla. Il file non verrà copiato in alcuna cartella (Debug and Publish). È appena aggiunto al progetto.

4) Fare clic con il tasto destro nel file e aprire Proprietà.

Passaggio 4

5) Modifica: “Crea azione” su “Contenuto” “Copia nella directory di output” su “Copia sempre”

Passaggio 5

A questo punto, il file verrà copiato nella cartella di output di pubblicazione (ovunque definito durante la pubblicazione). Tuttavia, quando eseguiamo il debug localmente (F5), non funzionerà perché il file non viene copiato nella cartella “utilità” locale nella base di codici.

6) Salvare le modifiche su Visual Studio, selezionando “Salva tutto”. Questo è così che il file “.csproj” viene salvato, poiché abbiamo apportato delle modifiche e ora lo modificheremo manualmente.

Passaggio 6

7) Aprire “.csproj” in Notepad ++.

Passaggio 7

8) Aggiungi il file all’evento “BeforeBuild” (ecco il mio):

Passaggio 8

         

9) Ho un evento “AfterBuild” per la modalità di rilascio che pubblica automaticamente il progetto per me, in modo che i file vadano direttamente alla cartella di output che voglio:

    ..\path\to\publish\MyProject      

10) Salvare il file in Notepad ++ e ricaricarlo su Visual Studio.

Passaggio 10

Quando costruisci il progetto, il file verrà copiato in entrambe le cartelle Debug e Release / Publish!

Tuttavia, vorrei sapere se esiste un modo più semplice / intuitivo per farlo.

Si potrebbe dire che questo sarebbe stato corretto cambiando la cartella di output di Debug allo stesso modo della cartella Release / Publish, in modo che i file sarebbero stati lì dopo la prima volta che ho pubblicato. Tuttavia, tieni presente che c’è anche un bug in questo. Se utilizzo una cartella di output diversa da “bin \”, i file aspx si lamenteranno di non riuscire a trovare gli assembly. Anche se imposto “Copia nella directory di output” su “Copia sempre”, si lamenterà che “Global.asax.cs” non è stato trovato.

Si prega di vedere queste domande correlate:

Messaggio di errore del parser: imansible caricare il tipo “TestMvcApplication.MvcApplication”

“Imansible caricare il tipo [Namespace]. Globale” mi ha causato dolore

È corretto / migliorato nelle versioni più recenti di Visual Studio?

MSBuild.WebApplication.CopyContentLinkedFiles NuGet potrebbe aiutarti. Questo pacchetto aggiunge una destinazione MSBuild che copia tutti i file di contenuto aggiunti come collegamento alla cartella dell’applicazione Web durante la compilazione.

Se l’objective è includere cartelle di contenuto (ad es. Script, immagini), non si dovrebbero gestire i singoli file. Invece, includi queste cartelle nella tua build e pubblica i file.

Quando i file devono essere aggiunti / rimossi, è sufficiente aggiornarli nella cartella dei contenuti. Questo è essenzialmente il modo in cui gestiamo i file della Guida poiché non sono gestiti dagli sviluppatori.

Dai un’occhiata a questi link:

C’è un modo per includere automaticamente i file di contenuto nel file di progetto asp.net?

Distribuzione Web ASP.NET utilizzando Visual Studio: distribuzione di file aggiuntivi

Penso che uno dei modi migliori sia creare un collegamento simbolico che vuoi. Ti sarà utile gestire il file che deve sempre essere lo stesso.