MSBuild não copia uma DLL, enquanto o Visual Studio faz
-
10-12-2019 - |
Pergunta
Em nosso projeto do Visual Studio 2010 fazemos referência - entre outros - ao SmartAssembly.Attributes.dll
e é copiado corretamente para o Bin/Debug
ou Bin/Release
pasta de nossas máquinas de desenvolvimento locais.No servidor de compilação, isso é verdadeiro para todas as outras referências, mas não para 'SmartAssembly.Attributes.dll'.A construção foi bem-sucedida.
O que devo verificar?
Obrigado.
Solução
Abre o teu .csproj
arquivo (ou .vbproj
arquivo) e procure a referência do assembly.Em seguida, certifique-se de que o caminho da dica ainda seja válido em seu servidor de compilação.Às vezes, o VS2010 adiciona um caminho de dica absoluto, em vez de usar um relativo ao .csproj
próprio arquivo, portanto a letra da unidade pode ser inválida em outra máquina.
Por exemplo, a referência pode ser semelhante à abaixo (criei todo o XML abaixo apenas para ilustrar e NÃO é válido), e o caminho da dica absoluta pode ser inválido no servidor de compilação (por exemplo,não há letra de unidade 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>
Você pode alterar o HintPath para torná-lo relativo ao .csproj
arquivo e, portanto, mais geral.Por exemplo:
<HintPath>..\libs\SmartAssembly.Attributes.dll<HintPath>
Outro problema pode ser que <Private>true<Private>
não está lá.Este atributo mapeado para o CopyLocal
propriedade no Visual Studio, portanto, se estiver faltando no seu .csproj
, a DLL não será copiada para bin\Debug
ou bin\Release
pelo MSBuild.Ver http://bronumski.blogspot.com/2009/06/project-reference-fun-and-games.html