Error en proyectos gRPC al usar un nombre de usuario de Windows con espacios o caracteres especiales - Code Variables -->
Code Variables Code Variables

Latest news

جاري التحميل ...

Error en proyectos gRPC al usar un nombre de usuario de Windows con espacios o caracteres especiales

gRPCComo un servidor, todos los que tengáis la inmensa fortuna de utilizar en Windows un nombre de usuario con espacios o caracteres especiales como "José María Aguilar", seguro que habéis encontrado alguna vez problemas con aplicaciones o herramientas que fallan cuando intentan acceder a contenidos de la carpeta C:\Users\<Tu nombre>:

Username chungo en Windows

De hecho, llevo ya varios encontronazos de este tipo en los últimos meses (por ejemplo, con Anaconda o con el SDK de Android para Windows), y el último lo he tenido al intentar utilizar las herramientas de Protobuf para la creación de servicios gRPC que, como sabéis, es una de las novedades incluidas en .NET Core 3.

Aunque el problema lo he encontrado trabajando con Visual Studio, ciertamente este IDE tiene poco que decir al respecto; ocurre lo mismo usando línea de comandos o cualquier otro entorno que se base en el tooling oficial de gRPC para .NET.

El problema

El problema es bastante sencillo de reproducir si usáis nombres de usuario de ese tipo. Basta con crear un proyecto de tipo "Servicio gRPC" e intentar compilarlo. Si lo hacemos desde Visual Studio, veremos el siguiente error:

Error 'protoc-gen-grpc: el sistema no puede encontrar la ruta especificada

Y si lo hacemos desde línea de comandos, no mejora mucho la cosa:
C:\test>dotnet new grpc
The template "ASP.NET Core gRPC Service" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on C:\test\test.csproj...
Restauración realizada en 96,36 ms para C:\test\test.csproj.

Restore succeeded.


C:\test>dotnet build
Microsoft (R) Build Engine versión 16.3.0+0f4c62fea para .NET Core
Copyright (C) Microsoft Corporation. Todos los derechos reservados.

Restauración realizada en 19,26 ms para C:\test\test.csproj.
--grpc_out : error : protoc-gen-grpc: El sistema no puede encontrar
la ruta especificada. [C:\test\test.csproj]

ERROR al compilar.

--grpc_out : error : protoc-gen-grpc: El sistema no puede encontrar
la ruta especificada. [C:\test\test.csproj]
0 Advertencia(s)
1 Errores

Tiempo transcurrido 00:00:00.68

C:\test>_
Me encantan estos errores que no dan pistas sobre el origen del problema ;)

La solución

Desde luego, y me lo apunto para mi próxima instalación de Windows, el mejor remedio sería no utilizar un nombre de usuario con espacios ni caracteres extraños. Un "jmaguilar" habría sido perfecto, ho hay necesidad de utilizar el nombre completo ;)
C:\Users\José María Aguilar> _
Pero si ya estamos en un momento en que esto no tiene solución sencilla, podéis seguir los pasos descritos a continuación:

1. Crear un enlace simbólico, o un junction link, por ejemplo en la raíz del disco duro, apuntando hacia el directorio donde se encuentra la carpeta packages de NuGet:
C:\> mklink /j "C:\.nuget" "C:\Users\José María Aguilar\.nuget"
Una vez ejecutado este comando, la carpeta se verá en el explorador de archivos como se muestra en la siguiente captura de pantalla:

  Junction link creado en la carpeta raíz

2. Establecer la variable de entorno NUGET_PACKAGES, que indica la ubicación de la carpeta Packages de NuGet, utilizando el enlace simbólico. En mi caso, es algo como:
NUGET_PACKAGES=C:\.nuget\packages
¡Y esto es todo! Espero que os resulte útil, y recordad que este mismo truco podéis usarlo para otros escenarios en los que ocurra lo mismo :)

Publicado en: Variable not found.

Comments



If you like the content of our blog, we hope to stay in constant communication, just enter your email to subscribe to the blog's express mail to receive new blog updates, and you can send a message by clicking on the button next ...

إتصل بنا

About the site

author Code Variables  Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

Learn more ←

Blog visitors

Blog stats

All Copyrights Reserved

Code Variables

2019