MSBuild no copia una DLL, mientras que Visual Studio sí lo hace
-
10-12-2019 - |
Pregunta
En nuestro proyecto Visual Studio 2010 hacemos referencia, entre otros, al SmartAssembly.Attributes.dll
y se copia correctamente en el Bin/Debug
o Bin/Release
carpeta de nuestras máquinas de desarrollo locales.En el servidor de compilación, esto es cierto para todas las demás referencias, pero no para 'SmartAssembly.Attributes.dll'.La construcción tiene éxito.
¿Qué debo comprobar?
Gracias.
Solución
Abre tu .csproj
archivo (o .vbproj
archivo) y busque la referencia del ensamblado.Luego asegúrese de que la ruta de la sugerencia siga siendo válida en su servidor de compilación.A veces, VS2010 agregará una ruta de sugerencia absoluta, en lugar de usar una relativa a la .csproj
archivo en sí, por lo que la letra de la unidad puede no ser válida en otra máquina.
Por ejemplo, la referencia puede ser similar a la siguiente (creé todo el XML a continuación solo para ilustrar y NO es válido), y la ruta de sugerencia absoluta puede no ser válida en el servidor de compilación (p. ej.no hay letra de unidad d allá):
<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>
Puede cambiar HintPath para que sea relativo al .csproj
archivo y por lo tanto más general.Por ejemplo:
<HintPath>..\libs\SmartAssembly.Attributes.dll<HintPath>
Otro problema puede ser que <Private>true<Private>
no está ahí.Este atributo se asigna al CopyLocal
propiedad en Visual Studio, por lo que si falta en su .csproj
, la DLL no se copiará bin\Debug
o bin\Release
por MSBuild.Ver http://bronumski.blogspot.com/2009/06/project-reference-fun-and-games.html