Co to jest plik dll.refresh w programie ASP.Net?

83

Wydaje się, że w naszym projekcie sieci Web ASP.Net mamy kilka plików .refresh powiązanych z niektórymi używanymi przez nas bibliotekami DLL innych firm. Masz pojęcie, czym one są i jak / kiedy są tworzone?

Jackson Pope
źródło

Odpowiedzi:

64

Te pliki podają ścieżkę do danej biblioteki DLL, aby poinformować program Visual Studio, gdzie ją znaleźć (możesz to sprawdzić, otwierając je w edytorze tekstu). Zostaną utworzone za każdym razem, gdy dodasz nowe odniesienie do projektu.

Zwykle pojawiają się, gdy używasz typu projektu, który nie tworzy standardowego pliku projektu programu Visual Studio, ponieważ zwykle znajdują się tam ścieżki do przywoływanych bibliotek DLL.

HullCitySteve
źródło
Znajdź odświeżenie, które działa - i może to być właściwa ścieżka. Względne ścieżki są takie, jak moje są ustawione ../
niico
32

Od tutaj :

W projekcie ASP.NET dodanie odwołania opartego na pliku spowoduje dodanie pliku .refresh do folderu Bin. Gdy projekt jest pod kontrolą źródła, ten plik jest następnie dodawany do kontroli źródła. *.dll.refreshpliki zaśmiecające katalog bin. Za każdym razem, gdy dodajesz odwołanie zewnętrzne, obok niego znajduje się plik dll.refresh. Te dll.refreshpliki są wyjątkiem od reguły i powinny przejść do kontroli źródła. Tylko w ten sposób Twój projekt internetowy będzie wiedział, gdzie znajdują się jego odniesienia.

SharpUrBrain
źródło
Czy biblioteka dll, do której odwołuje się nowy plik, musi mieć format .net? Czy świeży plik w C ++ DLL jest świeży?
Gqqnbig
6

Kilka informacji o odświeżaniu plików po próbach i błędach. Te eksperymenty zostały przeprowadzone w programie Visual Studio 2012. Odwołania zostały dodane do projektu sieci Web w języku C # asp.net.

Jak już wspomniano, dodanie odwołania do zestawu poprzez przeglądanie powoduje dodanie pliku .refresh. Jeśli jednak istnieją dodatkowe zależne biblioteki DLL do jawnie dodanej biblioteki DLL w katalogu, z którego dodajesz, zależności są również dodawane niejawnie, ale bez plików .refresh! Na przykład dodam odniesienie do „MyAssembly.dll”. Otrzymam także „MyAssembly.dll.refresh”. Ale jeśli istnieje zestaw „MyDependentAssembly.dll”, od którego zależy „MyAssembly.dll”, nie otrzymam pliku „MyDependentAssembly.dll.refresh”. Więc co się dzieje, to jeden zespół jest odświeżany, ale nie są zależne! Musisz dodawać biblioteki DLL pojedynczo w odwrotnej kolejności, a wtedy wszystko będzie działać lepiej.

Inne rzeczy, na które należy uważać. Dodanie pliku „MyAssembly.dll” spowoduje również dodanie pliku „MyAssembly.pdb”, jeśli jest obecny. Ponadto do odniesień zostanie dodany plik „MyAssembly.xml”, jeśli istnieje. Te dwa pliki również zostaną odświeżone, gdy obecny jest plik „MyAssembly.dll.refresh”.

Ale kiedy program Visual Studio decyduje się na wyszukiwanie plików odświeżania? Teraz pamiętaj, że w projekcie internetowym plik projektu nie śledzi konkretnie odwoływanych bibliotek DLL. Nie znajdziesz bibliotek DLL wymienionych w pliku projektu tylko zależności projektu. Kiedy więc nastąpi odświeżenie?

Odpowiedź na to, kiedy nastąpi odświeżenie, występuje podczas kompilacji, gdy należy załadować zestaw, do którego się odwołuje. Oznacza to, że chociaż zbudowanie wstępnie utworzonej witryny internetowej z możliwością aktualizacji może nie obejmować wszystkich bibliotek DLL. Ciągle miałem bibliotekę DLL, która nie odświeżyła się, a potem zdałem sobie sprawę, że była używana tylko w pliku .ascx. Usunięcie zaznaczenia pola wyboru „Zezwalaj na aktualizację prekompilowanej witryny” na stronie projektu Opcje programu MSBuild rozwiązało ten problem.

Jeśli jednak dodasz biblioteki DLL, do których istnieją odwołania, które są ładowane przez odbicie w kodzie, nie zostaną one zaktualizowane za pomocą odwołania. Będziesz musiał użyć zdarzeń kompilacji, aby skopiować je do katalogu bin.

Jack D. Menendez
źródło
Myślę, że kiedy mówisz „projekt internetowy”, masz na myśli „witrynę internetową”.
J. Polfer,