Używam VS2010 i próbowałem dodać kilka złożeń z lokalnego dysku twardego do mojego projektu C# poprzez odniesienie do pliku. Zaglądając do pliku csproj
znalazłem czasami pojawia się odniesienie plik jakoZrozumienie odwołania do zestawu csproj
<Reference Include="name">
Jednak czasami pojawia się jako
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
Co może spowodować różnicę?
Zainspirowany odpowiedzią na K3b, wykonałem kolejny test. Stworzyłem nowy projekt biblioteki klas.
Dodaj odniesienie do pliku. Początkowa wartość: Określona wersja w Właściwości okienka to Fałsz.
csproj
plik wyglądać<Reference Include="Name"> <HintPath>...</HintPath> </Reference>
Zmian konkretnej wersji w Properties szybowych do Prawdziwego. VS dodaje wersję w atrybucie
Include
.<Reference Include="Name, Version=..."> <HintPath>...</HintPath> </Reference>
Zmień konkretnej wersji w Właściwości szybowe do Fałsz ponownie. VS dodaje element potomny
SpecificVersion
.<Reference Include="Name, Version=..."> <HintPath>...</HintPath> <SpecificVersion>False</SpecificVersion> </Reference>
Wygląda więc na to, że zasada:
- Kiedy Wersja jest obecny w Dołącz atrybut i nie ma elementu
SpecificVersion
dziecko, zespół plik jest skonfigurowany tak, aby być Specyficzna wersja - Element podrzędny
SpecificVersion
jest dołączany tylko z wartością False.
Jedno ja nadal nie rozumiem:
- Dla mojego nowego projektu badawczego, jeśli usunąć odniesienie pliku i dodać go ponownie, to idzie z powrotem do formatu w pkt 1, który jest domyślna.
- Dla mojego istniejącego projektu, jeśli usunę odniesienie do pliku i doda go ponownie, otrzymam format w punkcie 3. Chociaż oznacza to również, że Wersja specjalna nie jest używana, zastanawiam się, dlaczego nie wraca ona do formatu w punkcie 1.
jesteś pewien? w moim VS2010, 'SpecificVersion' jest dzieckiem elementu' Reference'. Nie ma wpływu na ' ' other, które attributs jest ignorowane. –
Zrobiłem test. Konkretna wersja początkowo jest fałszywa. Następnie ręcznie edytowałem plik csproj, aby usunąć informacje o wersji. A potem zmieniłem Konkretną wersję na True. Zauważyłem, że VS wstawił informację o wersji. Wygląda więc na to, że jest ona w jakiś sposób powiązana z określoną wersją. Zastanawiam się jednak, dlaczego VS nie pamięta mojej ostatniej zmiany. Nawet ja resetuję określoną wersję do fałszu i usuwam i czytam odniesienie do zespołu, informacja o wersji jest nadal wstawiana. – intangible02
Potwierdzam twoje spostrzeżenia. Poprawiono odpowiedź odpowiednio. – k3b