2013-03-08 8 views
6

Kiedy dodaję plik z innego projektu Visual Studio 2012 do mojego bieżącego projektu, używając opcji "Dodaj jako łącze" z "Dodaj istniejący element" "dialog. Link do pliku jest ładnie stworzony i wszystko jest w porządku.Visual Studio 2012 - Jak dodać łącze pliku do pliku w tym samym projekcie

Kiedy powtórzę tę samą sztuczkę dla istniejącego pliku w projekcie ten sam projekt VS2012 (ale znajduje się w innym folderze), link nie zostanie utworzony. Visual Studio po prostu ignoruje akcję. Dlaczego nie jest to możliwe? Czy istnieje obejście tego problemu, więc mogę dodać linki do plików w tym samym projekcie?

Informacje dodatkowe: Chcę używać pakietów NuGet i mechanizmu aktualizacji, ale NuGet po prostu zrzuca wszystko w strukturze folderów (takich jak foldery "Skrypty" i "Zawartość"), których nie chcę używać. Używam folderu "libs" dla zewnętrznych rzeczy. Ale kiedy przenoszę pliki importowane przez NuGet, łamie mechanizm aktualizacji, więc chcę utworzyć łącza do plików (poniżej folderu libs) do zaimportowanych plików znajdujących się w folderze "Skrypty" itd.

Próbowałem już ręcznie edytuj plik .csproj, ale definicje dowiązań są nadal ignorowane. Jedyne rozwiązanie, jakie mogę wymyślić, to stworzenie kolejnego projektu dla pakietów NuGet i dodanie linków do tych zaimportowanych plików w moim drugim projekcie, ale wydaje mi się, że jest to przesada.

Odpowiedz

3

Nie jest to możliwe.

Plik csproj jest po prostu plikiem msbuild, mówiąc proces kompilacji jakie pliki i odniesienia składają się na projekt i co robi w zakresie budowy itp

Jeśli spojrzeć na sposób plik csproj kładzie razem zauważysz, że istnieją elementy ItemGroup. Jedną z funkcji tych elementów ItemGroup jest grupowanie plików. W "grupie plików" każda pozycja (oznaczona jako Kompilacja lub Brak) odnosi się do pliku z atrybutem Uwzględnij, np. Include = "filename.ext". Po dodaniu pliku do rozwiązania utworzy on jeden z tych elementów z odpowiednio ustawionym atrybutem Uwzględnij w ścieżce pliku względem projektu. Zanim jednak to zrobi, sprawdza, czy plik z pasującą ścieżką jest już w projekcie i ignoruje go, jeśli jest.

To, co próbujesz zrobić, to dodać duplikat pliku, a VS tego nie akceptuje.

--Edit--

Teraz, jak na obejście. Jeśli chcesz użyć dowiązania symbolicznego, możesz to zrobić. W oknie polecenia wpisz następujące polecenie:

mklink Link Target 

gdzie link określa nową symboliczną nazwę linku i docelowy określa ścieżkę (względną lub bezwzględną), że nowe połączenie dotyczy.

Powinieneś wtedy móc dodać plik do projektu zgodnie z wymaganiami.

+0

jasną odpowiedź. Dziękuję Ci. Mam nadzieję, że pewnego dnia dodadzą taką funkcję. Podobne do linuksowych dowiązań symbolicznych czy coś takiego. –

+0

Cóż, teraz o tym wspomniałeś, dowiązania symboliczne istnieją w oknach, więc opublikuję odpowiedź ze szczegółami, jak to osiągnąć – CarllDev

+0

Wygląda ładnie. Czy testowałeś to @CarllDev? –

-1

Visual Studio nie jest kompatybilny z hardlinki i softlinks

2

można edytować .csproj pliku. Na przykład zastąpić

<Content Include="fonts\fontawesome-webfont.woff" /> 

przez

<Content Include="fonts\fontawesome-webfont.woff" > 
    <Link>newPath\fonts\fontawesome-webfont.woff</Link> 
</Content> 

nowa ścieżka będzie ukryta w Solution Explorer, ale zostaną skopiowane (testowane w VS2015 CTP6)

Powiązane problemy