2009-05-15 14 views
5

Possiedo un'applicazione ASP.NET che si basa su un assembly esterno che non si trova nel GAC. L'app ha un file .refresh che copia l'assembly nella directory bin quando l'app è compilata.come si aggiornano i riferimenti nelle applicazioni ASP.NET senza Visual Studio?

Quando installo l'app su un server di produzione (copiando i file dell'app in una directory virtuale), la directory bin non viene aggiornata automaticamente dalla presenza del file .refresh come pensavo. Ho provato a utilizzare lo strumento aspnet_compiler ma non funziona poiché si aspetta che gli assembly si trovino già nella directory bin.

Come posso ottenere a .NET l'aggiornamento della directory bin dell'app senza Visual Studio?

risposta

1

I file .Refresh sono solo lì in modo che VS sa che deve tenere traccia degli originali, e se sono cambiati, copiare un nuova versione nella cartella/bin. Sono solo file di testo con un percorso per l'originale - la data di modifica viene utilizzata per il confronto.

Quando si dice:

Quando installo l'applicazione su un server di produzione (copiando i file app in una directory virtuale), la directory bin non viene aggiornato automaticamente.

Che cosa intendi esattamente? Non stai copiando anche il contenuto della directory bin sul server di produzione? Sarà necessario distribuire qualsiasi assembly dipendente con l'applicazione.

+0

No, non sto copiando il contenuto della directory bin. Avevo pensato che, poiché l'assembly di riferimento fosse installato separatamente, avrebbe dovuto essere installato anche sulla macchina di produzione e quell'installazione sarebbe stata copiata automaticamente nella directory bin. Quindi, penso che questo significhi che se copio anche l'assembly, non devo preoccuparmi di installarlo sul sistema di produzione in primo luogo. sarà solo parte dell'installazione dell'app. – Ferruccio

+0

Beh, a dire il vero, questo dipende da cosa fa il programma di installazione - se tutto ciò che fa è decomprimere alcuni file (esempi, help e DLL), quindi no, non si dovrebbe installare la macchina di produzione, basta copiare le DLL di riferimento . Se esegue altre operazioni di configurazione, è necessario assicurarsi che tali passaggi siano completati sul sistema di produzione.Ma generalmente, se puoi eseguirlo localmente con la DLL nella cartella bin, dovresti riuscire a copiarli in produzione. –

0

Cancellazione della directory della cache di asp.net potrebbe aiutare:

C:\WINDOWS\Microsoft.NET\Framework\ 
FRAMEWORK_VERSION\Temporary ASP.NET Files\YOUR_APP_NAME 
+0

no. non aiuta – Ferruccio

0

Elimina quei file .refresh.

fare un semplice script di build (usando quello che vuoi cmd, Nant, Rastrello, psake ...) che:

  • copia i file al asp.net cartella di applicazione
  • build asp. app di rete.

Oppure si può modificare il file .csproj e aggiungere qualcosa come:

<ProjectExtensions> 
    <PropertyGroup> 
    <PreBuildEvent>copy c:\path\to\dll\files $(ProjectDir)$(OutDir)</PreBuildEvent> 
    </PropertyGroup> 
</ProjectExtensions> 

Questo aggiungerà un'azione di generazione preliminare che copiare i file dll al dir uscita del vostro asp. app di rete. Dovrai costruirlo con MsBuild

Problemi correlati