2009-05-15 9 views
5

Mam aplikację ASP.NET, która polega na zewnętrznym zestawie, którego nie ma w GAC. Aplikacja ma plik .refresh, który kopiuje złożenie do katalogu bin po skompilowaniu aplikacji.Jak odświeżyć odwołania w aplikacjach ASP.NET bez Visual Studio?

Po zainstalowaniu aplikacji na serwerze produkcyjnym (przez skopiowanie plików aplikacji do katalogu wirtualnego) katalog bin nie jest automatycznie aktualizowany przez obecność pliku .refresh, tak jak myślałem. Próbowałem użyć narzędzia aspnet_compiler, ale to nie działa, ponieważ oczekuje, że złoenia są już w katalogu bin.

Jak uzyskać .NET, aby zaktualizować katalog bin aplikacji bez wizualnego studio?

Odpowiedz

1

W .refresh pliki są po prostu nie tak, że VS wie, że powinien śledzić oryginałów, a jeśli się zmieniły, kopiować nowa wersja do folderu/bin. Są to tylko pliki tekstowe ze ścieżką do oryginału - do porównania używana jest data modyfikacji.

Kiedy mówisz:

Kiedy zainstalować aplikację na serwerze produkcyjnym (kopiując pliki aplikacji do katalogu wirtualnego), katalog bin nie jest aktualizowana automatycznie.

Co dokładnie masz na myśli? Czy nie kopiujesz również zawartości katalogu bin na serwer produkcyjny? Będziesz musiał wdrożyć wszystkie zależne zespoły z aplikacją.

+0

Nie, nie kopiuję zawartości katalogu bin. Przyjąłem, że skoro referencyjny zestaw jest instalowany osobno, to musi on zostać zainstalowany na maszynie produkcyjnej, a instalacja zostanie automatycznie skopiowana do katalogu bin. Myślę, że to oznacza, że ​​jeśli skopiuję także zestaw, to nie muszę się martwić instalowaniem go na maszynie produkcyjnej. będzie to tylko część instalacji aplikacji. – Ferruccio

+0

Cóż, szczerze mówiąc, to zależy od tego, co robi instalator - jeśli wszystko, co robi, to rozpakuj niektóre pliki (sample, help i dll), to nie, nie musisz instalować maszyny produkcyjnej, po prostu skopiuj odnośniki DLL . Jeśli wykonuje inne czynności konfiguracyjne, musisz upewnić się, że te kroki zostały wykonane na maszynie produkcyjnej.Ale ogólnie rzecz biorąc, jeśli możesz uruchomić go lokalnie przy użyciu biblioteki dll w folderze bin, powinieneś być w stanie skopiować je do produkcji. –

0

Usuwanie katalogu cache ASP.NET może pomóc:

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

nope. nie pomaga. – Ferruccio

0

Usuń te pliki .refresh.

zrobić prosty skrypt kompilacji (przy użyciu co chcesz cmd, NANT, prowizji, psake ...), które:

  • kopiuje te pliki do folderu aplikacji asp.net
  • build Ci asp. aplikacja internetowa.

Albo można edytować plik .csproj i dodać coś takiego:

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

To doda pre gromadzeniu akcję, która będzie kopiować pliki dll do katalogu wyjściowego swojej asp. aplikacja internetowa. Będziesz musiał zbudować go z MsBuild

Powiązane problemy