2013-05-16 15 views
53

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.

  1. 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> 
    
  2. Zmian konkretnej wersji w Properties szybowych do Prawdziwego. VS dodaje wersję w atrybucie Include.

    <Reference Include="Name, Version=..."> 
        <HintPath>...</HintPath> 
    </Reference> 
    
  3. 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.

Odpowiedz

26

Jaki typ referencji otrzymasz, zależy od sposobu połączenia zespołu.

  • wybrać odwołuje montaż w projekcie-explorer
  • przejść do właściwości-page

tam znaleźć logiczną flagi "konkretnej wersji"

  • prawdziwych oznacza: montaż musi mieć wersję = xxx
  • fałszywe oznacza: zignorować wersję zespołu

(mam tylko niemiecko-VS2010 więc tłumaczenie angielskie dla niemieckiego "Spezifische Version" może być nieco inny)

[aktualizacja]

Próbowałem następujących użyciu vcs2010-Express niemiecki

dodać odniesienia z domyślnej SpecificVersion = false: brak wersja

<Reference Include="Castle.Core"> 
    <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath> 
</Reference> 

zmodyfikowany r eference: SpecificVersion = True: dodana wersja

<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL"> 
    <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath> 
</Reference> 

zmodyfikowane odniesienia znowu: SpecificVersion = False wersja pozostaje i nowy element SpecificVersion

<Reference Include="Castle.Core, Version=2.5.1.0, Culture=neutral, PublicKeyToken=407dd0808d44fbdc, processorArchitecture=MSIL"> 
    <HintPath>..\..\..\lib\fluentNHibernate\Castle.Core.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
</Reference> 

Wydaje się, że szczególna wersja jest pamiętany ale ignorede z powodu <SpecificVersion>False</SpecificVersion>

+1

jesteś pewien? w moim VS2010, 'SpecificVersion' jest dzieckiem elementu' Reference'. Nie ma wpływu na '' other, które attributs jest ignorowane. –

+1

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

+1

Potwierdzam twoje spostrzeżenia. Poprawiono odpowiedź odpowiednio. – k3b