Ho un progetto di Visual Studio che si basa su diversi riferimenti DLL. Ecco un esempio di tali riferimenti nel mio csproj:Come impedire a Visual Studio di interrompere la copia di DLL durante la generazione senza la mia autorizzazione?
<ItemGroup>
<Reference Include="Class1.Project1">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\bin\Class1.Project1.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Class1.Project2">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\bin\Class1.Project2.dll</HintPath>
<Private>False</Private>
</Reference>
</ItemGroup>
Tuttavia, quando includo questa classe come dipendenza progetto in un progetto di sito web, Visual Studio è trovare le dipendenze delle dipendenze indicate sopra. Durante la compilazione, Visual Studio imposta automaticamente la proprietà "Copia locale" su "Vero" e copia queste dipendenze nella directory ~/bin del mio sito web.
Questo, a sua volta, sovrascrive le versioni dei file DLL che già esistono in questa directory. Questo fa sì che il seguente errore:
Could not load file or assembly 'Class5.Project5, Version=3.6.1861.2, Culture=neutral, PublicKeyToken=dfeaee0e3978ac79' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Come faccio a rendere Visual Studio impostazione predefinita, il "copia locale" su "False" per tutto? Non voglio che Visual Studio copi automaticamente i file DLL durante la compilazione. Né voglio legare la mia build a versioni specifiche di una DLL.
VS non richiede che ogni progetto abbia una directory di output univoca. Dove lavoro, abbiamo oltre 1.000 progetti che generano tutto in una directory single bin. (Il trucco è creare i tuoi riferimenti da questa directory di output.) Usiamo nant per popolare i prerequisiti di build e pulire la directory di output tra le build di debug e release. Probabilmente non è una buona pratica, ma sicuramente funziona. –
Molto interessante! Quando ho provato questo, con VS2003, ho trovato che la compilazione non è riuscita perché i file nella directory di output erano in uso, tenuti aperti da un progetto quando un altro stava cercando di chiarire le cose. Quale versione di Visual Studio stai usando? – Bevan