W programie Visual Studio można wykonać Add
->Existing Item
, a następnie Add as Link
z przycisku rozwijanego Add
.Pliki połączone programu Visual Studio nie istnieją.
To jest świetne. To pozwala ci dodać plik z innego projektu, a edycja pliku również edytuje go w oryginalnym projekcie.
Chciałbym użyć tej funkcji, aby plik konfiguracyjny (o nazwie Shared.config) był obecny we wszystkich projektach w ramach jednego rozwiązania. I niech ten plik zawsze będzie taki sam.
rozwiązanie |
| - projekt 1
|
- Shared.config [fizyczny]
| - projekt 2
|
- Shared.config [połączony]
Po opublikowaniu plik rzeczywiście trafia do wszystkich opublikowanych projektów, więc nie ma problemu.
Ale PRZED opublikowaniem (w trakcie prac nad kompilacją) połączony plik tak naprawdę nie istnieje. Próba wyświetlenia pliku w Eksploratorze Windows dowodzi, że plik nie znajduje się w katalogu projektu. Visual Studio tylko sprawia, że wygląda tak, jakby istniał tam w eksploratorze rozwiązań. (Choć na budowie, połączone elementy są prawdopodobnie skopiowane do katalogu bin
; Ale ja nie chcę używać plików/dostępu z katalogu bin
.)
Teraz to daje problemy z kursu. Próba wydrukowania System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("Shared.config"))
zakończy się niepowodzeniem przed opublikowaniem projektu, ze względu na fakt, że Shared.config nie istnieje jeszcze w katalogu głównym projektu.
Co chciałbym zrobić, i gdzie ja potrzebuję twojej pomocy to:
- Chciałbym Nadmierne kopią wszystkie pliki związane z ich pierwotnej lokalizacji do ich miejsca docelowego.
Spowoduje to, że studio graficzne ma powiązany plik i kopię oryginału, który istnieje zarówno w tym samym katalogu o tej samej nazwie.
Zazwyczaj usługa VS nie zezwala na tworzenie połączonych elementów w katalogu, jeśli katalog ten zawiera już plik o tej samej nazwie.
Ale testowałem, najpierw tworząc połączony element; następnie za pomocą Eksploratora Windows, aby skopiować oryginalny plik do katalogu docelowego i zobaczyć, jak działa Visual Studio. Eksplorator rozwiązań po prostu ukrywa fizyczny plik i pokazuje połączony element zamiast tego. (Nawet jeśli klikniesz Show all files
w eksploratorze rozwiązań.)
rozwiązanie |
| - projekt 1
|
- Shared.config [fizyczny]
| - projekt 2
|
- Współdzielone.config [link]
|
- Shared.config [fizyczny, skopiowany tutaj podczas kompilacji, niewidoczny dla eksploratora rozwiązań]
Dokładnie tego chcę! Podczas próby edycji pliku Visual Studio otworzy "linkowany element". W przypadku kompilacji plik fizyczny zostanie skopiowany do katalogu docelowego, więc istnieje dla kodu, który próbuje uzyskać do niego dostęp.
Jak to zrobić? Czy należy to zrobić z wydarzeniami Build? Jeśli tak, to jak mam powiedzieć "skopiuj oryginały wszystkich połączonych plików do ich katalogu docelowego?
Twoje "rozwiązanie" brzmi niewiarygodnie zagmatwane i koszmar dla kontroli źródła. –
@ 280Z28 W jaki sposób udostępniane pliki są koszmarem dla kontroli źródła? Są one kopiowane podczas kompilacji do katalogu wyjściowego, który nie jest przechowywany w sterowaniu źródłowym. –
"Mylenie" jest subiektywne. Nie ma to jednak wpływu na kontrolę źródła, ponieważ OP nie próbuje sprawdzić kopii fizycznego pliku. Są artefaktem budowy, która po prostu znajduje się w katalogu projektu. – dss539