Sto usando VS2010 e ho cercato di aggiungere alcuni assembly dal disco rigido locale al mio progetto C# tramite il riferimento ai file. Sbirciare nel file csproj
, ho trovato a volte il riferimento al file viene visualizzato comeInformazioni su un riferimento all'assembly csproj
<Reference Include="name">
Tuttavia a volte appare come
<Reference Include="name, Version=xxx, Culture=neutral,
processorArchitecture=MSIL">
Che cosa potrebbe causare la differenza?
Ispirato alla risposta di k3b, ho fatto un altro test. Ho creato un nuovo progetto di libreria di classi.
Aggiungere un riferimento al file. Il valore iniziale di Versione specifica in Proprietà riquadro è False. Il look
csproj
di file come<Reference Include="Name"> <HintPath>...</HintPath> </Reference>
Change versione specifica in Proprietà riquadro per Vero. VS aggiunge la versione nell'attributo
Include
.<Reference Include="Name, Version=..."> <HintPath>...</HintPath> </Reference>
Change versione specifica in Proprietà riquadro per False nuovo. VS aggiunge un elemento figlio
SpecificVersion
.<Reference Include="Name, Version=..."> <HintPath>...</HintPath> <SpecificVersion>False</SpecificVersion> </Reference>
così sembra che la regola è:
- Quando versione è presente in Includere attributo e non v'è alcun elemento
SpecificVersion
bambino, il gruppo di file è configurato per essere Versione specifica - L'elemento figlio
SpecificVersion
viene aggiunto al valore False.
Una cosa che continuo a non capire:
- Per il mio nuovo progetto di test, se rimuovere il riferimento al file e aggiungi di nuovo indietro, si torna al formato di cui al punto 1, che è il predefinito.
- Per il mio progetto esistente, se rimuovo il riferimento al file e lo aggiungo di nuovo, torno formato nel punto 3. Anche se ciò significa che non viene utilizzata la versione specifica, mi chiedo perché non torni in formato al punto 1.
sei sicuro? nel mio VS2010, 'SpecificVersion' è figlio dell'elemento' Reference'. Non ha alcun impatto su '' other che gli attributi sono ignorati. –
Ho fatto un test. La versione specifica inizialmente è False. Ho quindi modificato manualmente il file csproj per rimuovere le informazioni sulla versione. E poi ho cambiato la versione specifica in True. Ho osservato che VS ha inserito le informazioni sulla versione. Quindi sembra che sia in qualche modo collegato alla versione specifica. Tuttavia, mi chiedo ora perché VS non ricorda il mio ultimo cambiamento. Anche io resettare la versione specifica su False e rimuovere e readd il riferimento all'assembly, le informazioni sulla versione sono ancora inserite. – intangible02
Confermo le vostre osservazioni. Aggiornato di conseguenza la risposta. – k3b