En mi proyecto de C #, estoy haciendo referencia a una de las DLL de mi empresa, que no está en NuGet (ya que no es pública) y mi canalización en Azure DevOps sigue fallando porque dice que no puede encontrar la referencia.

Error CS0234: The type or namespace name 'YYY' does not exist in the namespace 'ZZZ' (are you missing an assembly reference?)

Siguiendo los consejos de esta publicación He copiado el dll en mi solución y lo estoy haciendo referencia desde allí, por lo que el dll está controlado por versión y vive en el repositorio. Aquí un extracto del csproj:

<Reference Include="ZZZ.YYY, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\PrivateReferences\ZZZ.YYY.dll</HintPath>
  <Private>False</Private>
</Reference>

La solución se crea perfectamente a partir de mi máquina, pero sigue fallando en Azure. ¿Qué me estoy perdiendo?

¡Gracias!

EDITAR DESPUÉS DE RESPUESTA DE Bright Ran-MSFT
Aquí está el extracto de mi yaml:

trigger:
- develop

pool: 'Default'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Debug'

steps:

- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: NuGetCommand@2
  inputs:
    command: 'restore'
    restoreSolution: '**/*.sln'
    feedsToUse: 'select'
    vstsFeed: '<GUID of my Feed>'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'
1
Andrea Tassera 20 ene. 2021 a las 10:19

1 respuesta

La mejor respuesta

Puede publicar estos archivos DLL como su propio paquete NuGet personalizado en un Fuente de Azure Artifacts en Azure DevOps. Luego, en la canalización de su proyecto, puede usar el Tarea de restauración de NuGet para restaurar el paquete en su proyecto.

Después de publicar el paquete, cuando compile su proyecto a través de Visual Studio en su máquina local, también puede conectarse a la fuente de Azure Artifacts para restaurar el paquete en su proyecto.

[ACTUALIZACIÓN]

¿Ha verificado los registros de la consola de salida de la ejecución de la canalización para ver qué causó que el paquete no se pueda restaurar? ¿El motivo es un error no autorizado , como 401 o 403 ?

Si es así, antes de la tarea de restauración de NuGet , debe utilizar Tarea de autenticación de NuGet para proporcionar la información de autenticación. Aquí también debe crear un Conexión de servicio NuGet para su uso.

Normalmente, la fuente que configura para publicar usted mismo paquetes personalizados es privada, cuando se accede a la fuente en la canalización, se requiere la autenticación.

En su Visual Studio local, debido a que ha iniciado sesión con su cuenta, VS se autenticará automáticamente con su cuenta cuando se conecte al feed.

3
Bright Ran-MSFT 21 ene. 2021 a las 08:52