MSBuild non copia una DLL, mentre Visual Studio lo fa
-
10-12-2019 - |
Domanda
Nel nostro progetto Visual Studio 2010 facciamo riferimento - tra gli altri - al SmartAssembly.Attributes.dll
ed è correttamente copiato nel file Bin/Debug
O Bin/Release
cartella delle nostre macchine di sviluppo locali.Sul server di compilazione questo vale per tutti gli altri riferimenti ma non per "SmartAssembly.Attributes.dll".La costruzione riesce.
Cosa devo controllare?
Grazie.
Soluzione
Apri i tuoi .csproj
file (o .vbproj
file) e cercare il riferimento all'assembly.Quindi assicurati che il percorso del suggerimento sia ancora valido nel tuo server di build.A volte VS2010 aggiungerà un percorso di suggerimento assoluto, invece di usarne uno relativo a .csproj
file stesso, quindi la lettera dell'unità potrebbe non essere valida in un'altra macchina.
Ad esempio, il riferimento potrebbe essere simile a quello seguente (ho creato tutto l'XML seguente solo a scopo illustrativo e NON è valido) e il percorso del suggerimento assoluto potrebbe non essere valido nel server di compilazione (ad es.non c'è nessuna lettera di unità D Là):
<Reference
Include="SmartAssembly.Attributes, Version=8.0.0.0,
Culture=neutral, PublicKeyToken=b03f1f7f1ad5da3a,
processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<Private>true<Private>
<!-- The HintPath below should exist and be valid in your build server -->
<HintPath>d:\temp\SmartAssembly.Attributes.dll<HintPath>
</Reference>
Puoi modificare HintPath per renderlo relativo a .csproj
file e quindi più generale.Per esempio:
<HintPath>..\libs\SmartAssembly.Attributes.dll<HintPath>
Un altro problema potrebbe essere quello <Private>true<Private>
non c'è.Questo attributo è mappato a CopyLocal
proprietà in Visual Studio, quindi se manca nel tuo file .csproj
, la DLL non verrà copiata bin\Debug
O bin\Release
di MSBuild.Vedere http://bronumski.blogspot.com/2009/06/project-reference-fun-and-games.html